WinForm图表问题

WinForm chart issue

我正在尝试基于 dataTable 创建 chart。 table 仅包含两列,名称和计数:

+-------+-------+
| 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]));
}

这就是我得到的,这与我的预期不太一样:

改变这个:

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

您的原始代码为每一行添加了一个系列,并为每个系列添加了一个数据点。这使得图表将它们并排放置并显示它们的唯一点,每个都有独特的系列颜色..

新代码仅创建一个系列并将所有数据点添加到其点集合中。