我有一个包含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 });
我想要实现的目标是:
让X轴为YEAR
将Y轴作为COUNT
在LINE_NAME列中的每一行的折线图上都有单独的行。
我不能为我的生活找出如何使用UltraDataChart ...
有人可以根据这个给定的数据作为一个例子来实现甚至是双线图吗?
" line"那将存在在技术上是未知的,但肯定任何具体的例子都可以转换成更通用的循环
答案 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);