【问题标题】:asp.net Chart Force Labels On X-Axis Staggered Evenlyasp.net 图表强制 X 轴上的标签均匀交错
【发布时间】:2016-08-03 23:33:10
【问题描述】:

我正在创建一个 C# WinForms 应用程序,该应用程序使用 WinForms 折线图控件显示来自 SQL 服务器的几乎实时、基于时间(约 5 秒刷新率)的数据。在图表上获取和插入数据工作得很好,这只是我遇到的格式问题。 X 轴包含每个点的 DateTime,并设置为在 X 轴上显示日期。

我遇到的问题是 X 轴标签没有在图表中均匀显示。我能够获得所需的轴标签数量,但它们在轴上的位置不一致。

理想情况下,我希望能够设置 x 轴标签的数量,在图表的每一端都有一个标签,然后剩余的标签均匀地分布在图表的其余部分。然后,每次将新数据添加到图表时,标签都会保留在完全相同的位置,只是标签文本会更新。

这里有两张图片应该可以清楚地说明我在追求什么。

第一张图片是16:10:00到16:11:00范围内的数据。

这是我想要的任何开始/结束日期:

第二张图片显示了当我添加 5 秒的新数据并删除 5 秒的旧数据时会发生什么。

用新数据刷新后的图表:

这是我用于 x 轴格式化的代码的 sn-p。

            chart.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Seconds;              
            chart.ChartAreas[0].AxisX.Interval = timeDiff.TotalSeconds / numXTicks;
            chart.ChartAreas[0].AxisX.Minimum = timeMin.ToOADate();
            chart.ChartAreas[0].AxisX.Maximum = timeMax.ToOADate();
            chart.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd" + Environment.NewLine + "HH:mm:ss";
            chart.ChartAreas[0].AxisX.LabelStyle.IsEndLabelVisible = true;
            chart.ChartAreas[0].AxisX.IsMarginVisible = true;

感谢您的帮助。长期潜伏者和第一次海报。

【问题讨论】:

    标签: c# asp.net winforms charts


    【解决方案1】:

    对于任何可能好奇的人,我通过将 IntervalType 设置为 MilliSeconds 找到了一个合理的解决方法。

                chart.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Milliseconds;
                chart.ChartAreas[0].AxisX.Interval = unixDiff.TotalMilliseconds / numXTicks;
    

    虽然这不一定将 x 轴标签固定在适当的位置,但通过设置间隔将在图表中均匀地相乘,并且不会产生间隔的一小部分,标签将在整个图表中整齐地标记。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多