예제 #1
0
        public void SaveGraphDataToFile(string path, GraphChartBase graph)
        {
            IInternalGraphData data = (IInternalGraphData)graph;

            using (StreamWriter file = new StreamWriter(path))
            {
                foreach (var cat in data.Categories)
                {
                    file.WriteLine(cat.Name);
                    file.WriteLine(cat.Data.Count);
                    for (int i = 0; i < cat.Data.Count; i++)
                    {
                        DoubleVector3 item = cat.Data[i];
                        file.WriteLine(item.x);
                        file.WriteLine(item.y);
                    }
                }
            }
        }
예제 #2
0
        void RestoreDataValues(int axis)
        {
            IInternalGraphData data = this;

            if (axis == 0)
            {
                double maxH = data.GetMaxValue(0, true);
                double minH = data.GetMinValue(0, true);
                horizontalViewOrigin = minH;
                horizontalViewSize   = maxH - minH;
            }
            else
            {
                double maxV = data.GetMaxValue(1, true);
                double minV = data.GetMinValue(1, true);
                verticalViewOrigin = minV;
                verticalViewSize   = maxV - minV;
            }
        }
예제 #3
0
    public void Animate(string category, List <DoubleVector2> points, float totalTime)
    {
        graphChart = GetComponent <GraphChartBase>();
        if (graphChart == null)
        {
            return;
        }
        if (points == null)
        {
            return;
        }
        if (points.Count == 0)
        {
            return;
        }
        InnerAnimation anim = new InnerAnimation();

        anim.maxX = float.MinValue;
        anim.maxY = float.MinValue;
        anim.minX = float.MaxValue;
        anim.minY = float.MaxValue;

        for (int i = 0; i < points.Count; ++i)
        {
            anim.maxX = Math.Max(points[i].x, anim.maxX);
            anim.maxY = Math.Max(points[i].y, anim.maxY);
            anim.minX = Math.Min(points[i].x, anim.minX);
            anim.minY = Math.Min(points[i].y, anim.minY);
        }

        if (ModifyRange)
        {
            double maxX = anim.maxX;
            double maxY = anim.maxY;
            double minX = anim.minX;
            double minY = anim.minY;
            foreach (InnerAnimation a in mAnimations.Values)
            {
                maxX = Math.Max(maxX, a.maxX);
                maxY = Math.Max(maxY, a.maxY);
                minX = Math.Min(minX, a.minX);
                minY = Math.Min(minY, a.minY);
            }
            IInternalGraphData g = graphChart.DataSource;
            maxX = (float)Math.Max(g.GetMaxValue(0, true), maxX);
            minX = (float)Math.Min(g.GetMinValue(0, true), minX);
            maxY = (float)Math.Max(g.GetMaxValue(1, true), maxY);
            minY = (float)Math.Min(g.GetMinValue(1, true), minY);

            if (IsValidDouble(maxX) && IsValidDouble(maxY) && IsValidDouble(minX) && IsValidDouble(minY))
            {
                graphChart.DataSource.StartBatch();
                graphChart.DataSource.AutomaticHorizontalView = false;
                graphChart.DataSource.AutomaticVerticallView  = false;
                graphChart.DataSource.HorizontalViewSize      = (maxX - minX);
                graphChart.DataSource.HorizontalViewOrigin    = minX;
                graphChart.DataSource.VerticalViewSize        = (maxY - minY);
                graphChart.DataSource.VerticalViewOrigin      = minY;
                graphChart.DataSource.EndBatch();
            }
        }

        anim.points    = points;
        anim.index     = 0;
        anim.next      = 0;
        anim.totalTime = totalTime;
        anim.category  = category;
        graphChart.DataSource.ClearCategory(category);
        mAnimations[category] = anim;
    }