【问题标题】:Looking for way to label fastline chart axis C#寻找标记fastline图表轴C#的方法
【发布时间】:2013-07-16 19:21:55
【问题描述】:

我有一张图表,里面有 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,但是标签语法没有接受我的尝试。

【问题讨论】:

    标签: c# charts axis-labels


    【解决方案1】:

    这与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
            }
        }
    

    【讨论】:

    • 非常感谢!我大部分时间都在工作,但是使用了一种非常暴力编码的方法,并且打算发布“这不能更容易吗?”后续问题。
    • 很高兴为您提供帮助,mscharts 偶尔会以您意想不到的方式做事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2020-06-14
    相关资源
    最近更新 更多