MS图表控件:两个X轴,一个用于小时,另一个用于天数(或两者混合)

6

是否可以在X轴上显示小时(HH:MM)
和另一个(或相同的)以不同的间隔显示日期(YYYY-MM-DD)
使其看起来像这样:


 |               |               |               |               |

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


这是一个时间表,显示了从早上9点到下午1点的时间段。
                                                  |            
                                              2010/04/20         


最理想的情况是:


 |               |               |               |               |

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


离题建议
我越用MS Chart控件,就越后悔从ZedGraph转换过来。 我真的很生气和沮丧,我已经浪费了很多时间在这些毫无意义的细节上,通过非常丑陋的解决方法(比如创建许多重复的“幽灵”图表来“处理”不同缩放系列,-到底是怎么回事!?-,手动对齐数据添加空点,因为默认代码用例极其不灵活)。乍一看似乎很花哨,但从你想要微调并做出严肃的东西而不是显示超基本的饼状图或条形直方图的那一刻起,你就进入了一个地狱般的世界。所以我基本上建议不要使用它,除非你已经被卡住了(但重新考虑移动到不那么奇怪和耗时的东西从来不晚)

编辑: 我可以像这里建议的那样使用“关键字”。看起来非常时髦和繁琐...
此外,这违反了逻辑和演示之间的分离
(这绝不能发生!是设计不良的标志...)

对于另一个类似的恼人问题(无头绪),请参见帖子


无法回答你的问题,但我曾经考虑过从ZedGraph转换到MSCharts。最终我没有这样做是因为我没有时间去学习MSCharts,但我有个想法,以后可能会转换。根据你的“离题建议”,我可能会考虑继续使用ZedGraph一段时间。 - Eric
@Eric:很高兴能够帮你省去大量时间和头痛的损失 :-) 在不付出过高费用的情况下,拥有一个令人满意的综合科学图形工具还有很长的路要走。目前为止,Zedgraph 实现得非常智能,并且非常开放,可以编写自己的扩展(易于扩展)。相反,MSCharts 是一堆难看的解决办法,当你更仔细地查看其背后的代码时,会发现它们已经被匆忙地拼凑在了一起。愿和平伴随着你。 - Mehdi LAMRANI
1个回答

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)

基本上,它的流程是这样的:

CustomLabel label1 = new CustomLabel(...);
mychart.ChartAreas[0].AxisX.CustomLabels.Add(label1);

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接