寻找标注快速线图表轴C#的方法

时间:2013-07-16 19:21:56

标签: c# charts axis-labels

我有一个图表,里面有8个系列。每个系列都有相同的数据速率;这是来自仪器的75 Hz样品。我正在显示最近10秒的数据,总是在更新。

我拥有的一些东西:

定义:

    this.chart1.ChartAreas[0].AxisX.Minimum = 1;
    this.chart1.ChartAreas[0].AxisX.Maximum = 751;
    //this.chart1.Series[0].Lable = "X = (#VALX - 1)/75"; // ineffective, tried various syntax

管理新数据插入(仅显示一个通道示例):

    ch01_series.Points.AddY(dCh01); // ch01_series is "Series", dCh01 is double
    if(ch01_series.Points.Count > 751)
    {
        ch01_series.Points.RemoveAt(0);
    }

主要问题是我无法弄清楚如何标记我的X轴以显示0-10。

我想看到的是11条标有“0,1,2,3,4,5,6,7,8,9,10”的垂直网格线;现在,图表自我标签,并没有给我一个终点,它显示“1,201,401和601”。 (写这篇文章我现在正在考虑找到一种方法来控制网格线的数量并进行检查。)

关于(1)如何根据需要显示标签的任何建议,以及(2)如何自定义网格线以便我可以看到其中的11个而不是MS Chart选择绘制的4个。对于初学者,我确信如果我可以按照预期标记X轴,无论网格线如何都可以删除网格线

一些更新:

我想出了如何设置网格线间隔:

    this.chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 75;

并设置X轴间隔:

    this.chart1.ChartAreas[0].AxisX.Interval = 75;

剩下的是我如何获得自定义标签,或某种形式的标签显示0-10而不是“1,76,151,226,301,376,451,526,601,676和751 ”。公式为(Xvalue - 1)/ 75,但标签语法不接受我的尝试。

1 个答案:

答案 0 :(得分:0)

这与MSChart Y-Axis and X-Axis Labelling

非常相似
    chart1.Customize += chart1_Customize;

    void chart1_Customize(object sender, EventArgs e)
    {
        foreach (var label in chart1.ChartAreas[0].AxisX.CustomLabels)
        {
            int xval = int.Parse(label.Text); // get the list index
            int xnewLabel = ((xval - 1) / 75); // change the range
            label.Text = xnewLabel.ToString(); // update to new value
        }
    }