这就是图表目前的样子:
这是我从以下网站获取数据的一些数据表:
CountElem userid AddedDate
1433 1 2012-10-08
1327 1 2012-10-09
1514 1 2012-10-10
793 1 2012-10-11
219 6 2012-08-12
249 6 2012-08-13
289 6 2012-08-14
319 6 2012-08-15
233 6 2012-08-16
它会在一个系列中为所有用户ID绘制所有CountElem和AddedDate,而不是为其自己的系列中的每个用户ID绘制每个CountElem和AddedDate。
这是我的代码:
mainChart.DataSource = dataTable;
foreach (DataRow dataRow in users.Rows)
{
Series s = new Series("Userid_" + dataRow["userid"]);
s.ChartType = SeriesChartType.Spline;
if (colors.Length == i)
i = 0;
s.Color = colors[i];
s.XValueMember = "AddedDate";
s.YValueMembers = "CountElements";
mainChart.Series.Add(s);
i++;
}
问题我无法弄清楚如何“分裂”系列。它绘制每个系列中的所有数据,然后生成系列的每个开始和停止之间的线。
有没有办法定义每个系列只绘制一个用户ID?
我觉得每个系列提供一个数据表。但我无法知道如何做到这一点,我不相信它的工作方式......
答案 0 :(得分:1)
您可以尝试使用已过滤的DataRow集绑定您的系列,如下所示(未经测试,抱歉任何语法错误):
foreach (DataRow dataRow in users.Rows)
{
Series s = new Series("Userid_" + dataRow["userid"]);
s.ChartType = SeriesChartType.Spline;
s.Color = colors[i % colors.Count()];
var userRows = dataTable.Rows.Cast<DataRow>().Select(r=>r["userid"]==dataRow["userid"]).ToArray();
s.Points.DataBindXY(userRows,"AddedDate",userRows,"CountElements");
mainChart.Series.Add(s);
i++;
}
无论如何,请注意,除非所有系列都已对齐(即:共享完全相同的x值集),否则图表引擎将完全弄乱缺少的x值。您可能必须使用空点填充缺失的x值。
希望这会有所帮助