2013-06-07 6 views
5

Ich versuche, ein LineChart mit DefaultCategoryDataset plotten, und das Problem, das ich konfrontiert bin, ist , wenn ich versuche, einen Nullwert zwischen zwei Werte entweder die Verbindung zwischen den beiden Punkten ist verloren (dh die Linie, die die beiden Punkte verbindet, erscheint nicht), oder ich muss den Nullwert überspringen (durch Ausführen einer Nullprüfung an jedem Punkt in DataSet), um die anderen beiden Punkte zu verbinden, was zur x-Achse führt Punkt wird nicht in meinem Diagramm gezeichnet.Vermeiden Sie Null in Datensatz für Liniendiagramm

Zum Beispiel: wenn ich Unit1 haben, Unit2, Unit3 auf der x-Achse und einige Werte, sagen wir 10, 20, 30 für jeden, es funktioniert gut und zeichnet eine geneigte Linie. Aber statt 20 in Unit2, wenn ich Null setze, bekomme ich nur zwei Punkte in meinem Graphen ohne eine Linie, die diese beiden Punkte verbindet.

Um die Linie zu zeichnen, muss ich den Unit2-Punkt von meiner X-Achse überspringen. Aber ich möchte Unit1 mit Unit3 verbinden, ohne Unit2 zu überspringen (und sein Wert bleibt null), ich möchte nicht statt Null plotten.

Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Sie könnten zwei fast identische Datasets verwenden, aber zwei Renderer. Der erste Datensatz sollte alle Daten einschließlich null-Werte enthalten. Konfigurieren Sie einen Renderer für dieses Dataset so, dass nur Formen (aber keine Linien) gezeichnet werden. Sie erhalten eine Form für jeden Datenpunkt, der nicht null ist. Der zweite Datensatz sollte nur Daten enthalten, die nicht null sind. Konfigurieren Sie einen anderen Renderer für dieses Dataset, um nur Linien (aber keine Shapes) zu zeichnen. Sie erhalten eine Linie, die nur den Null-Datenpunkt überspringt, aber kontinuierlich ist.

-Code dafür könnte so aussehen:

// 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

Dies ist keine gute Lösung, wenn Sie die Legende für das Diagramm verwenden möchten. Dann wird ein Legendenelement für jede der beiden Zeilen angezeigt. – searchengine27