如何在给定数据表的UltraDataChart中显示多行

时间:2018-05-23 15:43:28

标签: infragistics linechart

我有一个包含3列的数据表 年(字符串) 行名称(字符串)

        table.Columns.Add("YEAR", typeof(string));
        table.Columns.Add("LINE_NAME", typeof(string));
        table.Columns.Add("COUNT", typeof(double));

        table.Rows.Add(new object[] {"2018",    "Line1"              ,      2   });
        table.Rows.Add(new object[] {"2017",    "Line2"              ,      6   });
        table.Rows.Add(new object[] {"2018",    "Line2"              ,      1   });
        table.Rows.Add(new object[] {"2011",    "Line3"              ,      35  });
        table.Rows.Add(new object[] {"2013",    "Line3"              ,      143 });
        table.Rows.Add(new object[] {"2014",    "Line3"              ,      108 });
        table.Rows.Add(new object[] {"2015",    "Line3"              ,      50  });
        table.Rows.Add(new object[] {"2016",    "Line3"              ,      44  });
        table.Rows.Add(new object[] {"2017",    "Line3"              ,      34  });
        table.Rows.Add(new object[] {"2013",    "Line4"              ,      3   });
        table.Rows.Add(new object[] {"2014",    "Line4"              ,      6   });
        table.Rows.Add(new object[] {"2015",    "Line4"              ,      4   });
        table.Rows.Add(new object[] {"2016",    "Line4"              ,      1   });
        table.Rows.Add(new object[] {"2017",    "Line4"              ,      2   });

我想要实现的目标是:

  1. 让X轴为YEAR

  2. 将Y轴作为COUNT

  3. 在LINE_NAME列中的每一行的折线图上都有单独的行。

  4. 我不能为我的生活找出如何使用UltraDataChart ...

    有人可以根据这个给定的数据作为一个例子来实现甚至是双线图吗?

    " line"那将存在在技术上是未知的,但肯定任何具体的例子都可以转换成更通用的循环

1 个答案:

答案 0 :(得分:0)

UltraDataChart接受对象的列表作为DataSource。您需要做的是首先将数据转换为这样的对象列表:

lazy val f = Future { ... // my function}

然后,您需要为每个行名称添加一个新系列。首先添加所需的必要轴:

var data = table.AsEnumerable() // convert the data to Enumerable so you can use linq over it
    .Select(r => new { year = r["YEAR"], lineName = r["LINE_NAME"], count = r["COUNT"] }) // convert data to list of anonimous objects
    .GroupBy(d => d.lineName, (key, value) => new { key = key, value = value.ToList() }) // group the data by line names
    .ToArray();

然后遍历您创建的数据并添加所有必要的序列:

var xAxis = new NumericXAxis();
var yAxis = new NumericYAxis();
myChart.Axes.Add(xAxis);
myChart.Axes.Add(yAxis);