2014-10-09 22 views
5

Tôi đang tạo một vài chuỗi dòng để điều khiển biểu đồ trong DevExpress tại thời gian chạy. Chuỗi này phải được tạo vào thời gian chạy vì số lượng chuỗi có thể thay đổi từ truy vấn dữ liệu mà tôi thực hiện. Đây là cách tôi tạo chuỗi video:Tích lũy giá trị trong chuỗi biểu đồ - 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)); 
    } 
} 

Điều này xảy ra bên trong một sự kiện nền tảng hoàn chỉnh và tất cả dữ liệu cần có trong danh sách thích hợp. Trong trường hợp thử nghiệm tôi đang chạy, 6 chuỗi được tạo.

Mỗi chuỗi bao gồm một số phép đo kiểm mà tôi cần trong trục x. Các phép đo này có thể có cùng giá trị (và có cùng giá trị trong nhiều trường hợp). Những gì tôi muốn sau đó là cho trục y để chứa số lượng bao nhiêu lần một phép đo là ví dụ -21. Điều này cuối cùng sẽ tạo ra một đường cong.

Hiện tại tôi tạo điểm chuỗi cho mỗi phép đo, nhưng tôi không biết cách xử lý đối số ArgumentDataMember/ValueDataMember trong trường hợp cụ thể này. Có cách nào để biểu đồ tự động thực hiện việc đếm hoặc tôi có cần phải thực hiện thủ công không? Bất cứ ai có thể giúp tôi trở lại đúng hướng?

Trả lời

1

Tôi đã thực hiện một số phép đo riêng biệt trước khi thêm các điểm chuỗi.

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(); 
} 
Các vấn đề liên quan