MS图表控制:两个X轴,一个小时,另一个几天(或混合两个)

Meh*_*ANI 6 c# mschart

可以有一个X轴显示小时(HH:MM)
和另一个(或相同)
以不同的间隔显示天数(YYYY-MM-DD),所以它看起来像


 |               |               |               |               |
Run Code Online (Sandbox Code Playgroud)

09:00 10:00 11:00 12:00 01:00


                                                  |            
                                              2010/04/20         
Run Code Online (Sandbox Code Playgroud)


或理想情况:


 |               |               |               |               |
Run Code Online (Sandbox Code Playgroud)

09:00 10:00 11:00 2010/04/20 01:00


关闭主题建议
我使用MS Chart Control越多,我对从ZedGraph切换的决定感到后悔.我真的生气和沮丧我在这些无意义的细节上浪费了很长时间,并通过非常丑陋的解决方法来规避(比如制作许多重复的"幽灵"图表来"处理"不同的缩放系列, - 哎呀!!? - ,对齐数据手动添加空点,因为默认代码用例非常不灵活).乍一看似乎非常花哨,但从你想要调整并做一些严肃的事情而不是显示超基本饼图或条形直方图的那一刻起,你就进入了一个地狱世界.所以我基本上建议不要使用它,除非你已经坚持使用它(但是重新考虑转移到那些并不那么糟糕和耗时的东西永远不会太晚)

编辑: 我可以在这里建议使用"关键字" .虽然看起来非常时髦又乏味......
此外,这违反了逻辑与演示之间的分离
(这绝不应该发生!设计糟糕的标志......)

对于这种恼人的类似(无能)问题的另一个例子,请参阅这篇文章

woo*_*hoo 1

您可以使用单个 X 轴,并且可以自定义“12:00”标签来显示“日期”。请参阅命名空间 System.Windows.Forms.DataVisualization.Charting 中的 CustomLabel 和 CustomLabelsCollection。您可以使用免费软件 ILSpy 查看 MSChart dll 内部的内容。

CustomLabel 有几个构造函数,我使用了这个:

public CustomLabel(double fromPosition, double toPosition, string text, int labelRow, LabelMarkStyle markStyle, GridTickTypes gridTick)
Run Code Online (Sandbox Code Playgroud)

基本上,它是这样的:

CustomLabel label1 = new CustomLabel(...);
mychart.ChartAreas[0].AxisX.CustomLabels.Add(label1);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。