2014-10-09 2 views
5

Ich erstelle mehrere Zeilenreihen für eine Diagrammsteuerung in DevExpress zur Laufzeit. Die Reihe muss zur Laufzeit erstellt werden, da die Anzahl der Reihen von der Datenabfrage abweichen kann, die ich mache. Hier ist, wie ich die Serie schaffen:Werte in Diagrammserien akkumulieren - WPF 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)); 
    } 
} 

Dies geschieht in einem Background abgeschlossen Ereignis und alle benötigten Daten ist in den entsprechenden Listen. In der Testinstanz, in der ich laufe, werden 6 Serien erstellt.

Jede Serie besteht aus einigen Testmessungen, die ich in der x-Achse brauche. Diese Messungen können denselben Wert haben (und in vielen Fällen den gleichen Wert haben). Was ich dann will, ist, dass die y-Achse die Anzahl der Wiederholungen enthält, wie oft eine Messung beispielsweise -21 ist. Dies wird am Ende eine Kurve erzeugen.

Momentan erstelle ich einen Serienpunkt für jede Messung, aber ich weiß nicht, wie man mit dem ArgumentDataMember/ValueDataMember in diesem speziellen Szenario umgeht. Gibt es eine Möglichkeit, das Diagramm automatisch zu zählen oder muss ich es manuell tun? Kann mir jemand auf der Strecke helfen?

Antwort

1

Am Ende habe ich eine eindeutige Zählung der Messungen durchgeführt, bevor ich die Reihenpunkte addierte.

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(); 
} 
Verwandte Themen