Линейный график с двумя рядами на основе значений одного столбца

Я хочу построить линейный график на основе этой таблицы:
таблица
где каждый KPINameиз них имеет свою линию на графике.
Как это сделать?
Я пробовал это:


foreach (KPI_PG kpi in _PG.KPI_PG)
{
    Series currentPG = new Series(kpi.KPIName);
    chrt_PGByYear.Series.Add(currentPG);
    currentPG.ChartType = SeriesChartType.Line;
    currentPG.BorderWidth = 3;
    currentPG.XValueType = ChartValueType.String;
    currentPG.XValueMember = "Year";
    currentPG.YValueType = ChartValueType.Int32;
    currentPG.YValueMembers = "Value";
}

но это не работает из-за того же имени диаграммы.

2 ответа

  1. Имена рядов должны быть уникальными. Вы должны проверить, если серия уже существует, и если это так, то не добавляйте его. В противном случае добавьте серию.

    private void createNewSeries(String SeriesName)
    {
        if(chrt_PGByYear.Series.IsUniqueName(SeriesName))
        {
            Series currentPG = chrt_PGByYear.Series.Add(SeriesName);
            currentPG.ChartType = SeriesChartType.Line;
            currentPG.BorderWidth = 3;
            currentPG.XValueType = ChartValueType.String;
            currentPG.XValueMember = "Year";
            currentPG.YValueType = ChartValueType.Int32;
            currentPG.YValueMembers = "Value";
        }
    }
    

    Тогда вы можете использовать его как:

    foreach (KPI_PG kpi in _PG.KPI_PG)
    {
        createNewSeries(kpi.KPIName);
    }
    
  2. Это кажется невозможным. Я просто заполнил эту диаграмму вручную, используя chrt_PGByYear.Series[serieName].Points.AddXY()метод.