2015-04-02 51 views
0

我正在嘗試創建基於dataTablechart。表格只包含兩列,名稱和數量:WinForm圖表問題

+-------+-------+ 
| names | count | 
+-------+-------+ 
| name1 | 650 | 
+-------+-------+ 
| name2 | 0  | 
+-------+-------+ 
| name3 | 211 | 
+-------+-------+ 
| name4 | 50 | 
+-------+-------+ 

我想Y axiscount,我想要爲每個name生成一個列,並標記實際名稱。

這是我的嘗試:

int max = 0; 
for (int i = 0; i < table.Rows.Count; i++) 
{ 
    if (Convert.ToInt32(table.Rows[i][1]) > max) max = Convert.ToInt32(max.Rows[i][1]); 
} 
chart1.ChartAreas.Add("area"); 
chart1.ChartAreas[0].AxisY.Minimum = 0; 
chart1.ChartAreas[0].AxisY.Maximum = max; 
chart1.ChartAreas[0].AxisY.Interval = max/ 10; 

for (int i = 0; i < table.Rows.Count; i++) 
{ 
    chart1.Series.Add(table.Rows[i][0].ToString()); 
} 
for (int i = 0; i < table.Rows.Count; i++) 
{ 
    chart1.Series[i].Points.AddXY(table.Rows[i][0].ToString(), Convert.ToInt32(table.Rows[i][1])); 
} 

這是我所得到的,這並不完全符合我的預期: enter image description here

+0

你正在添加很多系列,但我想你只想要一個!另請注意,有預定義的CA和系列;一定要清除它們以保持完全控制。 – TaW 2015-04-02 09:38:57

+0

我清除了一切。這是一張完全空白的圖表。 – fishmong3r 2015-04-02 09:43:19

回答

1

更改此:

for (int i = 0; i < table.Rows.Count; i++) 
{ 
    chart1.Series.Add(table.Rows[i][0].ToString()); 
} 
for (int i = 0; i < table.Rows.Count; i++) 
{ 
    chart1.Series[i].Points.AddXY(table.Rows[i][0].ToString(), 
            Convert.ToInt32(table.Rows[i][1])); 
} 

本:

Series S = chart1.Series.Add("names"); 

for (int i = 0; i < table.Rows.Count; i++) 
{ 
    S.Points.AddXY(table.Rows[i][0].ToString(), Convert.ToInt32(table.Rows[i][1])); 
} 

您的原始代碼爲每個系列的每行和一個數據點添加了一個系列。這使得圖表將它們彼此放在一起並顯示它們的唯一點,每個點都具有獨特的系列顏色。

新代碼只創建一個系列並將所有數據點添加到其Points集合。