我在运行时在DevExpress中为图表控件创建了几个系列。系列必须在运行时创建,因为系列的数量可能与我的数据查询不同。以下是我创建系列的方法:
foreach (var item in lstSPCPrintID)
{
string seriesName = Convert.ToString(item);
LineSeries2D series = new LineSeries2D();
dxcSPCDiagram.Series.Add(series);
series.DisplayName = seriesName;
var meas = from x in lstSPCChart
where x.intSPCPrintID == item
select new { x.intSPCMeas };
foreach (var item2 in meas)
{
series.Points.Add(new SeriesPoint(item2.intSPCMeas));
}
}
这发生在backgroundworker完成的事件中,所需的所有数据都在相应的列表中。在我正在运行的测试实例中,创建了6个系列。
每个系列都包含我在x轴上需要的一些测试测量。这些测量值可以是相同的值(在很多情况下都是相同的值)。我想要的是y轴包含测量的次数,例如-21。这将最终创建一条曲线。
现在我为每个测量创建一个系列点,但我不知道如何在这个特定场景中处理ArgumentDataMember / ValueDataMember。有没有办法让图表自动进行计数,还是需要手动完成?任何人都可以帮我回到正轨吗?
答案 0 :(得分:1)
在添加系列点之前,我最终对测量进行了明确的计算。
foreach (var item in lstSPCPrintID)
{
string seriesName = String.Format("Position: {0}", Convert.ToString(item));
LineStackedSeries2D series = new LineStackedSeries2D();
series.ArgumentScaleType = ScaleType.Numerical;
series.DisplayName = seriesName;
series.SeriesAnimation = new Line2DUnwindAnimation();
var meas = from x in lstSPCChart
where x.intSPCPrintID == item
select new { x.dblSPCMeas };
var measDistinctCount = meas.GroupBy(x => x.dblSPCMeas).Select(group => new { Meas = group.Key, Count = group.Count() }).OrderBy(y => y.Meas);
foreach (var item2 in measDistinctCount)
{
series.Points.Add(new SeriesPoint(item2.Meas, item2.Count));
}
dxcSPCDiagram.Series.Add(series);
series.Animate();
}