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]));
}
您的原始代码为每一行添加了一个系列,并为每个系列添加了一个数据点。这使得图表将它们并排放置并显示它们的唯一点,每个都有独特的系列颜色..
新代码仅创建一个系列并将所有数据点添加到其点集合中。
我正在尝试基于 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]));
}
您的原始代码为每一行添加了一个系列,并为每个系列添加了一个数据点。这使得图表将它们并排放置并显示它们的唯一点,每个都有独特的系列颜色..
新代码仅创建一个系列并将所有数据点添加到其点集合中。