我尝试根据chart
创建dataTable
。该表只包含两列,名称和计数:
+-------+-------+
| names | count |
+-------+-------+
| name1 | 650 |
+-------+-------+
| name2 | 0 |
+-------+-------+
| name3 | 211 |
+-------+-------+
| name4 | 50 |
+-------+-------+
我希望Y axis
成为count
。我希望为每个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]));
}
这就是我得到的,这不是我所期望的:
答案 0 :(得分: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集合中。