C#图表类 - x轴的自定义标签?

时间:2014-07-28 21:09:38

标签: c# .net visual-studio user-interface charts

我使用C#使用EntityFramework与MSSQL数据库进行通信。我想从图表中的表格绘制的两列是以下格式:第一列是字符串(它是如何提供给我的,我知道它可能是格式" MM / dd / yyyy HH:mm:ss.fff"不是最好的设计方案。 (其中fff代表毫秒),第二个表是一个简单的浮点值。

我希望x轴代表时间,我希望y轴代表浮点值。如果我只是将字符串提供给图表类,则这些点在水平方向上等间隔。我试图想象的数据不是以规则的时间间隔出现的,所以这不是理想的行为。

我尝试做的是将日期字符串转换为整数,每个int表示自我绘图的最早点以来已经过了多少毫秒。这在图表中显示得很好,但我不希望x轴上的点标记新计算的整数。我希望x轴显示最初的日期,但我希望保持相对水平顺序,当值转换为整数时。我希望我的问题清楚。举例来说,如果我想要看到以下三点(01/01/2014 00:00:00.000,y1),(01/01/2014 00:00:00.500,y2)和(01/01/2014) 00:00:02.000,y3),我怎样才能确保第二个和第三个之间的水平距离比第一个和第二个点之间的水平差异大三倍,同时保持原始日期标签在x上轴?

我有什么想法可以做到这一点?有没有办法指定一个函数,每个int都会为x轴返回一个标签字符串?

感谢。

1 个答案:

答案 0 :(得分:2)

如果您逐个添加积分 - 例如

chart1.Series[0].Points.AddXY(dateString, yValue);

您可以将string个对象转换为DateTime个对象,图表控件可以根据需要轻松显示。在致电dateString之前,只需转换AddXY即可。

如果您将数据从数据库直接绑定到图表,则可能无效。您可以尝试设置轴的Format属性:

chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MM/dd/yyyy hh:mm:ss.fff";

或类似的东西。不确定这是否会正常工作。