Frage

Ich bin mit einem XYPlot ein Liniendiagramm in es mit 1 oder mehreren Linien zu zeigen. Ich habe es mit einem Hörer Muster kombiniert, so dass es Updates erhalten können: wenn ja, es die Linien entfernt einen dataset.removeAllSeries() mit (Dataset vom Typ XYSeriesCollection ist) nennen, und fügt dann die neuen Linien dataset.addSeries(...) mit jedoch ein neues Diagramm mit neuen Linien werden verschiedene Farben haben!

So wohl die Farbe Renderer immer wieder neue Farben zu verteilen.

Gibt es eine Möglichkeit die Renderer zurückgesetzt, so dass es beginnt mit der ersten Farbe wieder heraus?

War es hilfreich?

Lösung

Sie können die setSeriesPaint() Methode des Renderers verwenden, um eine neue Farbe für jede Serie zu setzen.

Beispiel:

renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.blue);

Der erste Parameter ist der Index für Serie.

Andere Tipps

plot.getRenderer().setSeriesPaint(serieindex, null);

Dies ist ein Ersatz für die Renderer-Reset, die mich selbst entdeckt (was ich als Anfänger stolz bin :)). Ich habe viele Serien in meinem Diagramm, die entfernt werden müssen, dann wieder hinzugefügt aufgrund neuer Berechnungen. Ich brauche 1-Serie, zu sein, immer schwarz und andere in allen möglichen Farben gemalt, sondern schwarz. Nun, da ich erhalte neue Serie in potenziell neuer Ordnung, damit ich nicht verwenden können:

plot.getRenderer().setSeriesPaint(0, new Color(0,0,0);

einfach so, weil, wenn ich erste Serie als schwarz in ersten Berechnungen gründen, wird jede künftige erste Serie (in neuen Berechnungen) immer schwarz sein, so kann ich nicht nur eine bestimmte Serie in schwarz bekommen (wegen verschiedener Reihenfolge der Zugabe-Serie), die ich nicht wollen. Wenn ich alle Serie entfernen Verwendung:

dataset.removeAllSeries();

es nicht zurückgesetzt festen Farben der Serie (wenn Sie setSeriesPaint verwenden (serieindex, neue Farbe (RGB, RGB, RGB)) für, sagen wir, 3-Serie, Sie entfernen und fügen Sie wieder neue Serie, neue Serie wird erhalten ihre Farben von Ihnen festgelegt, bevor sie für andere Serien mit dem gleichen Indizes). So etwa dachte ich Renderer Zurücksetzen, fand ich nichts im Internet, aber ich habe versucht, „null“ als Farbe. Mit festen „null“ als Linie die Farbe Serie kaum sichtbar ist (ich nicht gerade jetzt daran erinnern, wie ich das überprüft), aber es ist keine Farbe für Renderer, so dass es automatisch eine neue Farbe aus der Liste nimmt (was übrigens außer Kraft setzen können ). So, jetzt kann ich eine schwarze Farbe für eine bestimmte Serie aufgebaut. Ich nehme seinen zufälligen Index mit:

int serieindex = dataset.indexOf(seriename);

, weil ich seinen Namen kennen (key). Ich gründe null „Farbe“ für jede andere Serie, so nehmen sie eine erste freie Farbe aus der Renderer-Liste. Ich denke, Sie können damit für auch die gleichen neue Serie Farben zu halten, aber sein natürlich besser feste Farben im Fall einzurichten simpliest als meine.

Insgesamt fand ich eine „Farb Renderer-Reset“ aus, die eine Definition der Farbe einmal für eine Serie mit bestimmten Nummer aus löschen, so dass nach kann Serie beliebig neue Serie mit dieser Nummer zu löschen automatisch neue Farbe aus der Liste bekommen. Ich hoffe, es wird jemand helfen :). Es ist meine erste Antwort so vielleicht ist es nicht die beste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top