2014-10-09 27 views
5

Tworzę szereg linii dla kontroli wykresu w DevExpress w czasie wykonywania. Seria musi być utworzona w czasie wykonywania, ponieważ liczba serii może różnić się od zapytania danych, które wykonuję. Oto, jak utworzyć serię:Sumaryczne wartości w serii wykresów - 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)); 
    } 
} 

Dzieje się to w przypadku zdarzenia ukończonego w tle, a wszystkie potrzebne dane znajdują się na odpowiednich listach. W uruchomionej instancji testowej tworzy się 6 serii.

Każda seria składa się z kilku pomiarów testowych, których potrzebuję na osi X. Pomiary te mogą mieć tę samą wartość (w wielu przypadkach mają tę samą wartość). Chciałbym wtedy, aby oś y zawierała liczbę pomiarów, ile razy jest na przykład -21. To na końcu utworzy krzywą.

W tej chwili tworzę punkt seryjny dla każdego pomiaru, ale nie wiem jak obsłużyć ArgumentDataMember/ValueDataMember w tym konkretnym scenariuszu. Czy istnieje sposób, aby wykres automatycznie wykonał liczenie lub czy muszę zrobić to ręcznie? Czy ktoś może mi pomóc wrócić na właściwe tory?

Odpowiedz

1

Skończyłem robić wyraźną liczbę pomiarów przed dodaniem punktów serii.

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