2013-05-24 2 views
5

Я положил элемент управления диаграммой в приложение winforms, а затем попытаюсь добавить некоторые данные, которые будут отображаться в виде столбчатой ​​диаграммы столбцов. Я не могу заставить вторую серию нормально отображать, как бы я ни старался. Я выделил проблему, удалив все остальное и оставив только 2 серии и минимальный объем данных.Как добавить точки в сложную серию в .NET Chart control?

код Диаграмма:

System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); 
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); 
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); 
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); 
this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart(); 
((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit(); 
this.SuspendLayout(); 
// 
// chart1 
// 
chartArea1.Name = "ChartArea1"; 
this.chart1.ChartAreas.Add(chartArea1); 
legend1.Name = "Legend1"; 
this.chart1.Legends.Add(legend1); 
this.chart1.Location = new System.Drawing.Point(49, 62); 
this.chart1.Name = "chart1"; 
series1.ChartArea = "ChartArea1"; 
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StackedColumn; 
series1.Legend = "Legend1"; 
series1.Name = "Series2"; 
series2.ChartArea = "ChartArea1"; 
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StackedColumn; 
series2.Legend = "Legend1"; 
series2.Name = "Series3"; 
this.chart1.Series.Add(series1); 
this.chart1.Series.Add(series2); 
this.chart1.Size = new System.Drawing.Size(534, 300); 
this.chart1.TabIndex = 0; 
this.chart1.Text = "chart1"; 

Код данных:

chart1.Series["Series2"].Points.Add(new DataPoint(1, 1)); 
chart1.Series["Series2"].Points.Add(new DataPoint(2, 4)); 
chart1.Series["Series2"].Points.Add(new DataPoint(3, 5)); 
chart1.Series["Series3"].Points.Add(new DataPoint(2, 3)); 

В дизайнерской графике выглядит следующим образом (в точности, как я хочу, чтобы выглядеть):

Designer chart

Но когда я запускаю приложение, одна серия никогда не отображается (может быть, скрыта ели t serie ...).

Application chart

Когда я изменяю вторую точку Series2 к

chart1.Series["Series2"].Points.Add(new DataPoint(2, 0)); 

, то это выглядит так:

Application chart 2

Что я делаю неправильно? Это ошибка? Я также экспериментирую со сложными и неуложенными комбинациями столбцов в моем реальном приложении, и всегда результаты выполнения отличаются от того, что просматривается в дизайнере (я имею в виду, что столбцы отображаются совершенно по-другому).

ответ

4

Хорошо, я нашел решение. Согласно this серии данных должны быть выровнены (так что между прочим они должны иметь одинаковое количество выборок). Выравнивание данных описано here. Поэтому одна линия решает проблему:

chart1.DataManipulator.InsertEmptyPoints(1, IntervalType.Number, "Series2, Series3"); 
+0

Как я могу сгенерировать этот график без линий сетки? – Isuru

+1

Отметьте этот ответ: http://stackoverflow.com/a/11630498/219547 – Episodex

0

Нужно всегда добавлять нулевые точки, если значения отсутствуют в серии. Метод «Вставить пустые очки» мне не помог.

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