首页 文章

asp.net图表力标签在X轴上交错均匀

提问于
浏览
0

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

我遇到的问题是X轴标签没有在图表中均匀显示 . 我能够获得我想要的轴标签数量,但它们并不总是在轴上的相同位置 .

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

这是两张图片,应该清楚我所追求的是什么 .

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

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

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

刷新新数据后的图表:

这是我用于x轴格式化的代码片段 .

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;

谢谢你的帮助 . 长时间潜伏和第一次海报 .

1 回答

  • 0

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

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

    虽然这并不一定能够将x轴标签固定到位,但是通过使Interval在图表中均匀地相乘并且不会产生一小部分间隔,标签将在整个图表中整齐地标记 .

相关问题