2013-05-24 8 views
5

Umieszczam kontrolkę wykresu w aplikacji WinForms, a następnie próbuję dodać niektóre dane, które mają być wyświetlane jako wykres kolumnowy. Nie mogę uzyskać drugiej serii, która byłaby wyświetlana poprawnie bez względu na to, jak bardzo się staram. Wyizolowałem ten problem, usuwając wszystko inne i pozostawiając tylko 2 serie i minimalną ilość danych.Jak dodać punkty do ułożonej w stos serii w formancie Wykres .NET?

kod Wykres:

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"; 

Kod danych:

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)); 

W tabeli projektant wygląda następująco (dokładnie tak, jak chcę wyglądać):

Designer chart

Ale kiedy uruchamiam aplikację, jedna seria nigdy nie jest wyświetlana (może być ukryta przez pierwsze t serie ...).

Application chart

Kiedy zmienić drugi punkt Series2 do

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

to wygląda:

Application chart 2

Co robię źle? Czy to błąd? Eksperymentuję też z zestawionymi w stos i nieskumulowanymi kombinacjami kolumn w mojej prawdziwej aplikacji, a zawsze wyniki w czasie wykonywania różnią się od tego, co jest podglądane w projektancie (mam na myśli kolumny wyświetlane w zupełnie inny sposób).

Odpowiedz

4

Ok, znalazłem rozwiązanie. Według this serie danych muszą być wyrównane (więc między innymi muszą mieć taką samą liczbę próbek). Wyrównanie danych jest opisane here. Tak więc jedna linia rozwiązuje problem:

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

Jak mogę wygenerować ten wykres bez linii siatki? – Isuru

+1

Sprawdź tę odpowiedź: http://stackoverflow.com/a/11630498/219547 – Episodex

0

Zawsze należy dodać punkty zerowe, jeśli brakuje wartości w serii. Metoda "Wstaw puste punkty" nie pomogła mi.

Powiązane problemy