2013-06-07 14 views
5

Próbuję wykreślić LineChart za pomocą DefaultCategoryDataset, a problem, który napotykam, to , gdy próbuję wykreślić wartość pustą pomiędzy dwiema wartościami albo połączenie między dwoma punktami jest lost (tzn. linia łącząca dwa punkty nie pojawia się), albo muszę pominąć wartość pustą (wykonując zerową kontrolę każdego punktu w DataSet), aby połączyć dwa pozostałe punkty, co skutkuje osią x punkt nie zostanie narysowany na moim wykresie.Unikaj wartości NULL w zestawie danych dla wykresu liniowego

Na przykład: jeśli mam Unit1, Unit2, Unit3 na osi x i pewnych wartości, powiedzmy 10, 20, 30 dla każdego, to działa dobrze i działki nachyloną linię. Ale zamiast 20 w Unit2, jeśli ustawię wartość null, otrzymam tylko dwa punkty wykreślone na moim wykresie bez linii łączącej te dwa punkty.

Aby uzyskać linię wykreśloną, muszę pominąć punkt Unit2 z mojej osi X. Ale chcę to, że chcę podłączyć Unit1 do Unit3 bez przeskakiwania Unit2 (i jego wartość pozostaje zerowa), nie chcę wykreślić zamiast wartości NULL.

Czy jest jakiś sposób to zrobić?

Odpowiedz

1

Można użyć dwóch prawie identycznych zestawów danych, ale dwóch renderers.

Pierwszy zestaw danych powinien zawierać wszystkie dane, w tym wartości: null. Skonfiguruj renderer dla tego zestawu danych, tak aby rysował tylko kształty (ale bez linii). Otrzymasz kształt dla każdego punktu danych, który nie ma wartości "null".

Drugi zestaw danych powinien zawierać tylko dane inne niż null. Skonfiguruj inny renderer dla tego zestawu danych, aby rysował tylko linie (ale bez kształtów). Otrzymasz linię, która po prostu pomija zerowy punkt danych, ale jest ciągła.

Kod ten może być tak:

// create your chart here... 

// configure first renderer 
LineAndShapeRenderer renderer = LineAndShapeRenderer) plot.getRenderer(); 
renderer.setBaseShapesVisible(true); 
renderer.setBaseLinesVisible(false); 

// configure second renderer 
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer(true, false); 
plot.setDataset(1, dataset2); 
plot.setRenderer(1, renderer2); 

HTH,
- Martin

+0

Nie jest to dobre rozwiązanie, jeśli chcesz korzystać legendę do wykresu. Następnie wyświetli element legendy dla każdej z dwóch linii. – searchengine27

Powiązane problemy