Od dłuższego czasu używam biblioteki OxyPlot i bardzo ją sobie chwalę. Ostatnio zamarzyło mi się stworzenie wykresu przedziałowego. Na początek stwierdziłem, że wystarczy zastosować zwykły wykres liniowy czyli klasę LineSeries. Załóżmy, że chcemy zaprezentować na wykresy przedziały tj.; (2,3), (4,6) oraz (8,10). Spróbujmy, więc czegoś takiego:
var s = new LineSeries(); s.Title = "Nieciągłe przedziały"; s.Points.Add(new DataPoint(2, 1)); s.Points.Add(new DataPoint(3, 1)); s.Points.Add(new DataPoint(4, 1)); s.Points.Add(new DataPoint(6, 1)); s.Points.Add(new DataPoint(8, 1)); s.Points.Add(new DataPoint(10, 1));To jednak nie zadziała gdyż w rezultacie otrzymamy linię ciągłą, czego zresztą należało się spodziewać ponieważ LineSeries po prostu łączy kolejne punkty. Wypróbowałem więc inne rodzaje wykresów, bawiłem się ustawieniami, ale bez rezultatów. Rozwiązanie okazało się jednak bardzo proste. Jeśli nie chcemy, aby dwa punkty zostały połączone linią to pomiędzy nimi należy umieścić punkt o współrzędnych (Double.Nan, Double.NaN).
var s = new LineSeries(); s.Title = "Nieciągłe przedziały"; s.Points.Add(new DataPoint(2, 1)); s.Points.Add(new DataPoint(3, 1)); s.Points.Add(new DataPoint(Double.NaN, Double.NaN)); s.Points.Add(new DataPoint(4, 1)); s.Points.Add(new DataPoint(6, 1)); s.Points.Add(new DataPoint(Double.NaN, Double.NaN)); s.Points.Add(new DataPoint(8, 1)); s.Points.Add(new DataPoint(10, 1));Na koniec jeszcze przykład tak skonstruowanego wykresu: