如何使用垂直线将zed-graph分成三个部分以将它们分开?

时间:2013-05-12 11:11:18

标签: c# zedgraph

我无法将zedgraph分成几个部分,我希望能够监控我的运行会话,并且我想尝试构建一个显示我的结果的程序,主要是在图表上加速。从文本文件中读取结果,然后将其存储在int列表和zedgraph的pointparlist中。我希望能够将图形分为三个部分,前15%是运行的预热部分,中间(70%)是主要运行会话,最后第三个是冷却会话(15%) 。而不是在一个图表上绘制整个会话,并手动尝试找出我的热身结束的地方,我想知道是否可以在热身和中间之后放置一条垂直线。

我非常感谢您提供的任何建议或帮助,我已经尝试了几天,但如果有意义的话,我无法将我的意图用于Google搜索。

分割存储速度值的int列表是否更好的方法在绘制图表之前?我愿意就如何解决这个问题提出建议。再次感谢很多人。

1 个答案:

答案 0 :(得分:1)

简单的方法是绘制两条垂直线,然后它变成3个部分。这是代码:

PointPairList warmUpList = new PointPairList();
    LineItem warmUpCurve = new LineItem("warmUpCurve");
    PointPairList coolingDownList = new PointPairList();
    LineItem coolingDownCurve = new LineItem("coolingDownCurve");

    private void Form1_Load(object sender, EventArgs e)
    {
        // Create an instance of Graph Pane
        GraphPane myPane = zedGraphControl1.GraphPane;

        // x & y variables to store the axis values
        double xVal;
        double yVal;

        // Clear the previous values if any
        warmUpList.Clear();
        coolingDownList.Clear();

        myPane.Legend.IsVisible = false;

        // Create a list using the above x & y values
        warmUpList.Add(myPane.XAxis.Scale.Min + myPane.XAxis.Scale.MajorStep*1.5 , myPane.YAxis.Scale.Max);
        warmUpList.Add(myPane.XAxis.Scale.Min + myPane.XAxis.Scale.MajorStep * 1.5, myPane.YAxis.Scale.Min);

        coolingDownList.Add(myPane.XAxis.Scale.Max - myPane.XAxis.Scale.MajorStep * 1.5, myPane.YAxis.Scale.Max);
        coolingDownList.Add(myPane.XAxis.Scale.Max - myPane.XAxis.Scale.MajorStep * 1.5, myPane.YAxis.Scale.Min);

        // Add the curves
        warmUpCurve = myPane.AddCurve(" ", warmUpList, Color.Red, SymbolType.None);
        coolingDownCurve = myPane.AddCurve(" ", coolingDownList, Color.Red, SymbolType.None);

        TextObj WarmUpTextObj = new TextObj("Warm Up", myPane.XAxis.Scale.Min + myPane.XAxis.Scale.MajorStep, myPane.YAxis.Scale.Max - myPane.YAxis.Scale.MajorStep);
        TextObj RunningTextObj = new TextObj("Running Test", myPane.XAxis.Scale.Max/2, myPane.YAxis.Scale.Max - myPane.YAxis.Scale.MajorStep);
        TextObj CoolingDownTextObj = new TextObj("Cooling Down", myPane.XAxis.Scale.Max - myPane.XAxis.Scale.MajorStep, myPane.YAxis.Scale.Max - myPane.YAxis.Scale.MajorStep);

        myPane.GraphObjList.Add(WarmUpTextObj);
        myPane.GraphObjList.Add(RunningTextObj);
        myPane.GraphObjList.Add(CoolingDownTextObj);

        zedGraphControl1.Refresh();
    }

enter image description here