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

发布于 2024-10-20 19:48:27 字数 1884 浏览 8 评论 0 原文

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


 |               |               |               |               |

09:00 ;  10:00               11:00               &n公共服务提供商;   12:00                sp ;01:00


                                                  |            
                                              2010/04/20         


或者理想情况下:


 |               |               |               |               |

09:00                  10:00                   11:00           2010/04/20公共服务提供商;            01:00


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

编辑: 我可以按照此处的建议使用“关键字”。虽然看起来很时髦又乏味......
此外,这违反了逻辑和表示之间的分离
(这绝对不应该发生!设计不佳的迹象...)

有关此类恼人的类似(无知)问题的另一个示例,请参阅这篇文章

Is is possible to have an X Axis display hours (HH:MM)
and another (or the same) displaying Days (YYYY-MM-DD)
at different intervals so it look like


 |               |               |               |               |

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


                                                  |            
                                              2010/04/20         

Or Ideally :


 |               |               |               |               |

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

Off Topic Advice
The more I use MS Chart Control the more I regret my decision switching from ZedGraph.
I am really getting angry and frustrated I've lost long hours on meaningless details like these and circumventing through very ugly workarounds (like creating many duplicate "ghost" charts to "handle" different scaled series , -What the Heck!!?-, aligning data MANUALLY adding empty points because the default code use case is extremely unflexible). It seems very fancy at first glance, but from the moment you want to tweak and do serious stuff rather than displaying an ultra basic pie chart or bar histogram you enter a World of Hell. So I basically advice NOT to use it, unless you are already stuck with it (but it's never too late to reconsider moving to something that isn't that wonky and time-consuming)

EDIT :
I could use "Keywords" as adviced here. Seems very funky and tedious though...
Besides, this violates the separation between Logic and Presentation
(this should never happen! Sign of Poor Design...)

For another example of such annoying similar (clueless) issues see this post

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只是在用心讲痛 2024-10-27 19:48:27

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

希望这会有所帮助。

You can use a single X axis, and you can customize the "12:00" labels to display the "date".
See CustomLabel and CustomLabelsCollection in namespace System.Windows.Forms.DataVisualization.Charting. You could use the freeware ILSpy to see what's inside MSChart dll.

There are several constructors for CustomLabel, I used this one:

public CustomLabel(double fromPosition, double toPosition, string text, int labelRow, LabelMarkStyle markStyle, GridTickTypes gridTick)

Basically, it goes something like this:

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

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文