从 DataGridView 获取数据到 Chart

Get data from DataGridView to Chart

我需要将数据从单个 DataGridView 获取到 3 个不同的图表中,每列到一个图表中。 这是我第一次使用图表,所以我对它们进行了一些研究,但找不到任何可以帮助我解决这个特定问题的东西。

下面是我的 DataGridView 和我的图表的屏幕截图,以及它们各自的图例:

我需要的是(至少在理论上)一个非常简单的东西。在 "SANITY" 图表中,我需要将位于 Table[0, 0] 的值转换为类似 sanityChart.Series[0] 的值作为它的 'Y' 值,依此类推。 "UNIT" 和 "ISSUES DB" 也一样。 任何帮助将不胜感激。

从你提问的方式和你展示的图片来看,我相信你想要这样的东西:

我只用了一个 Chart 并且我为每个 Columns 添加了一个 Series

设置图表后,我为 table 中的每一行添加了一个数据点到每个 series/columns..:[=​​21=]

// setting up the datagridview
Table.Rows.Clear();
Table.Columns.Clear();
Table.Columns.Add("state", "");
Table.Columns.Add("sanity", "SANITY");
Table.Columns.Add("unit", "UNIT");
Table.Columns.Add("issuesDb", "ISSUES DB");
// filling in some data
Table.Rows.Add("ALL PASSED", 86, 21, 2);
Table.Rows.Add("FAILED", 7, 0, 1);
Table.Rows.Add("Cancelled", 0, 0, 0);

// Now we can set up the Chart:
List<Color> colors = new List<Color>{Color.Green, Color.Red, Color.Black};

chart1.Series.Clear();

for (int i = 0 ; i < Table.Rows.Count; i++)
{
    Series S = chart1.Series.Add(Table[0, i].Value.ToString());
    S.ChartType = SeriesChartType.Column;
    S.Color = colors[i];
}

// and fill in all the values from the dgv to the chart:
for (int i = 0 ; i < Table.Rows.Count; i++)
{
   for (int j = 1 ; j < Table.Columns.Count; j++)
   {
      int p = chart1.Series[i].Points.AddXY(Table.Columns[j].HeaderText, Table[j, i].Value);
   }
}

请注意,我选择添加 DataPointsAddXY 重载,并且还决定通过添加 X-Values 作为 strings。在内部它们仍然转换为 doubles 并且都将具有 0 的值!这对我们来说不是问题,但重要的是要了解我们没有使用有效数字,因此不能将它们视为数字!优点是轴标签被设置为列 headers 而无需任何进一步的工作..