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

2024-04-13

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


 |               |               |               |               |

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


                                                  |            
                                              2010/04/20         


或者理想情况下:


 |               |               |               |               |

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


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

EDIT :我可以按照建议使用“关键字”here http://msdn.microsoft.com/en-us/library/dd456628.aspx。虽然看起来很时髦而且乏味......
此外,这违反了逻辑和表示之间的分离
(这绝对不应该发生!设计不佳的迹象......)

对于此类恼人的类似(无知)问题的另一个例子,请参阅this https://stackoverflow.com/questions/3739370/auto-interval-precision-in-ms-chart post


您可以使用单个 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);

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS 图表控制:两个 X 轴,一个用于数小时,另一个用于数天(或混合两者) 的相关文章

随机推荐