2016-08-05 2 views
1

Я нашел странное поведение в MS Chart для Windows Forms.Задание двух значений y для x = 0 в элементе управления диаграммой MS

Предположим, я хочу иметь участок разброса с двумя точками (1,10) и (1,20). Я могу сделать это следующим образом:

.... 
Series series = new Series(); 
series.ChartType = SeriesChartType.Point; 
double[] x = { 1, 1 }; 
double[] y = { 10, 20 }; 
series.Points.DataBindXY(x, y); 

Это работает нормально. Но теперь мне нужен тот же результат, но оба значения x должны быть 0.

double[] x = { 0, 0 }; 
double[] y = { 10, 20 }; 
series.Points.DataBindXY(x, y); 

В этом случае контрольная карта создает две точки данных на «автогенерируемые» х положениях 1 и 2. Он просто игнорирует данные рентгеновские значения. Это то же поведение, если я использую

series.Points.AddXY(0, 10); 
series.Points.AddXY(0, 20); 

Я получаю тот же эффект для более чем двух точек данных. Таким образом, оказывается, что график рассеяния не работает, если не хотя бы одно значение x отличное от нуля.

Я думаю, что возможным обходным путем было бы использование нескольких серий, но это неприемлемо.

У кого-нибудь есть объяснение этого поведения или решение этой проблемы?

ответ

3

Я нашел решение сам:

Вы должны добавить

series.CustomProperties = "IsXAxisQuantitative=True"; 

к коду. Таким образом, значения x действительно рассматриваются как значения. Я не знаю, почему это не самоочевидно, если я использую функцию BindXY.

+0

Великий человек, ты спас мой день :-) – eljobso

+1

'серии [«IsXAxisQuantitative»] =«истинный»,' эквивалентно, но позволит избежать перезаписи существующих пользовательских свойств. –

0

(я бы просто прокомментировать ответ Fratyx, но я думаю, не имеют репутацию, чтобы сделать это.)

Чтобы уточнить ответ Fratyx, тем IsXAxisQuantitative свойство применяется только к определенным SeriesChartType-х годах, и будет игнорируются для других типов.

Это те типы: https://referencesource.microsoft.com/#System.Windows.Forms.DataVisualization/Common/Utilities/CustomAttributesRegistry.cs,e51a969ce4c7db16

Смежные вопросы