MSChart пользовательские xaxis маркировки - PullRequest
3 голосов
/ 26 августа 2011

У меня есть MSChart, который выглядит следующим образом.

http://11.a.hostable.me/images/june2007.JPG

Я хотел бы настроить метки оси X:

  • Я хочу пометить каждый столбец, а не каждые 5
  • Я хочу указать, что означает каждая метка.

Чего я не понимаю, так это того, что когда я вижу его в представлении «все годы» (как показано ниже), номер, который я присваиваю как значение XV, используя

oDataPoint_PV.SetValueXY (год, просмотры)

делает так, чтобы указанный год показывался как метка, но по какой-то причине в представлении «Месяцы» он начинается с 1 вместо первого установленного значения, которое в данном примере составляет 13.

oDataPoint_PV.SetValueXY (Day, Views)

На графике за июнь 2007 года он должен начинаться с 13 и заканчиваться 12 июля.

http://11.a.hostable.me/images/years.JPG

Ответы [ 2 ]

17 голосов
/ 29 августа 2011

Чтобы ответить на ваш первый вопрос: «Я хочу пометить каждый столбец, а не каждые 5» Вы можете указать, как часто метка будет отображаться, используя свойство interval.

chart1.ChartAreas[0].AxisX.Interval = [desired interval];

или установить интервал только для использования меток:

chart1.ChartAreas[0].AxisX.LabelStyle.Interval = [desired interval];

Если я правильно следую за концом вашего вопроса, когда вы не хотите, чтобы ваш график начинался с нуля, вы можете использовать смещение метки.

chart1.ChartAreas[0].AxisX.LabelStyle.Offset = 1;

Это пропустит первый ярлык, который вы упомянули, это ноль.

Вторая задача «Я хочу указать, что означает каждая метка», может быть решена несколькими способами

Одним из методов является отображение значения (x или y) на оси (x или y), которое, как я считаю, является методом, который вы используете на основе информации, предоставленной в вашем вопросе

Другой способ - установить метку оси вручную для каждой точки данных

chart1.Series[0].Points[0].AxisLabel = "your label"

Вы также можете добавить информацию метки при добавлении точек данных

chart1.Series[0].Points.Add(new DataPoint(4, 4) { AxisLabel = "your label" });

Наконец, вы можете микроуправлять вашими ярлыками, используя пользовательские ярлыки, но это может быть более сложным, и, исходя из того, что вы ввели, вам, вероятно, не нужно их использовать, поэтому я не буду вдаваться в них.

Кроме того, вы устанавливаете xvalue, используя строку или объект DateTime?
Примерно так:

Chart1.Series[0].XValueType = ChartValueType.DateTime;
System.DateTime x = new System.DateTime(2008, 11, 21);
Chart1.Series[0].Points.AddXY(x.ToOADate(), 34);

Если это так, при работе с метками даты и времени объекты диаграммы Microsoft имеют дополнительные функции, которые можно настроить для управления отображением. Вот некоторая дополнительная информация, которая может оказаться для вас полезной.

http://msdn.microsoft.com/en-us/library/dd456614.aspx

Затем вы можете использовать такие свойства (и я уверен, что больше, но я не часто работаю с датами)

chart1.ChartAreas[0].AxisX.LabelStyle.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Days;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;

Если я не ответил должным образом на ваши вопросы из-за недопонимания, пожалуйста, дайте мне знать и пересмотрите ваш вопрос, чтобы направить меня в правильном направлении

(Примеры кода с фактическими данными, которые вы используете для создания графиков, с результирующими изображениями + то, что вы хотите делать вместо того, что отображается на изображении, полезно - у вас есть часть этого, но оно неполное)

Удачи!

0 голосов
/ 28 декабря 2012

Я обнаружил, что если вы не конвертируете свои даты в String с для меток, смещение интервала может стать проблемой:

String("MM-dd") вместо DateTime

chart.ChartAreas[0].AxisX.Interval = 1;
...