MS Chart Control: две оси X, одна для часов, другая для дней (или смешивая обе) - PullRequest
6 голосов
/ 07 марта 2011

Возможно отображение часов по оси X (ЧЧ: ММ)
и другое (или то же самое) отображение дней (ГГГГ-ММ-ДД)
с разными интервалами, чтобы это выглядело как


 |               |               |               |               |

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. Я действительно становлюсь злым и разочарованным. Я потратил долгие часы на бессмысленные детали, подобные этим, и обошелся с помощью очень уродливых обходных путей (например, создавая многократные дублирующие «призрачные» диаграммы для «обработки» различных масштабируемых серий, - Какого черта !! выравнивание данных вручную, добавляя пустые точки, потому что вариант использования кода по умолчанию является чрезвычайно негибким). На первый взгляд это кажется очень навороченным, но с того момента, когда вы хотите настроить и сделать что-то серьезное, вместо того, чтобы показывать ультраосновную круговую диаграмму или гистограмму, вы попадаете в Мир Ада . Поэтому я в основном советую НЕ использовать его, если вы уже не застряли с ним (но никогда не поздно пересмотреть переход к чему-то, что не так уж сложно и отнимает много времени)

РЕДАКТИРОВАТЬ: Я мог бы использовать «Ключевые слова», как рекомендовано здесь . Хотя выглядит очень прикольным и утомительным ...
Кроме того, это нарушает разделение между логикой и представлением
(этого никогда не должно быть! Признак плохого замысла ...)

Другой пример таких раздражающих подобных (невежественных) проблем см. this post

1 Ответ

1 голос
/ 13 июля 2011

Вы можете использовать одну ось X, и вы можете настроить метки «12:00» для отображения «даты». См. CustomLabel и CustomLabelsCollection в пространстве имен System.Windows.Forms.DataVisualization.Charting. Вы можете использовать бесплатный 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);

Надеюсь, это поможет.

...