JFreeChart - SetSeriesColor Problem

gandalf001

Mitglied
Hallo,

ich bin ziemlich fast mit meiner Grafik fertig, ausser einer Sache.

Wie kann ich die Farben für die Series fest definieren. Ich habe 3 Serien Datensätze (rot, grün, blau) und habe dafür auch Checkboxen. Die Checkboxen reagieren auf User Klicks. Wenn ich ein CheckBox für z.B. Rot den Haken wegnehme, zeigt mir die Grafik zwar die rote Linie nicht. Aber die restlichen 2 Linien werden jeweils auch mit Rot und Grün gemalt. Von Koordinatenperspektive sieht alles OK aus. Also der Graph wird richtig gemalt aber mit falschen Farben. Die Farben der Linien fangen immer mit Rot, dann Grün und dann Blau an.
Die Farben habe ich schonmal so definiert.

XYItemRenderer renderer = chart.getXYPlot().getRenderer();
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setSeriesPaint(2, Color.blue);



Ich hoffe, ihr könnt mir helfen.
 

Harry Kane

Top Contributor
XYItemRenderer renderer = chart.getXYPlot().getRenderer();
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setSeriesPaint(2, Color.blue);

Damit solltest du in der Tat die Farben der Serie festlegen und damit den auto-populate Mechanismus, der manchmal nicht das tut was der User erwartet, umgehen.

Anhand des sehr spartanischen Codeschnipsels kann man nur rumraten, was schief gegangen ist.
**Kristallkugel an**
Mit deinen Checkboxen blendest du eine Serie nicht nur aus (was in JFreeChart sehr einfach möglich ist), sondern schmeisst sie komplett aus dem Dataset raus. Und wenn die rote Serie nicht mehr da ist, hat halt die blaue Serie den Index 0 und wird entsprechend der Anweisung
Code:
renderer.setSeriesPaint(0, Color.red);
in rot gezeichnet.
 
Zuletzt bearbeitet:

gandalf001

Mitglied
Danke Harry für die Antwort.

Erstmal was meinst du mit "(was in JFreeChart sehr einfach möglich ist)"? So einfach ist es doch dann nicht, oder?



Das ist mein CheckBox für den RED.

Java:
c_red = new JCheckBox(new VisibleAction(renderer, i));
		c_red.setSelected(true);
		c_red.setLabel("RED");
		renderer.setSeriesVisible(i, true);
		renderer.setSeriesPaint(i, Color.red);

		c_red.addItemListener(new ItemListener() {

			@Override
			public void itemStateChanged(ItemEvent e) {
				linegraph = new LineChart("Line Graph");
				ChartPanel chartPanel = linegraph.createPanel("CamBox Tool");
				chartPanel.setDomainZoomable(true);
				chartPanel.setRangeZoomable(false);

				getContentPane().removeAll();
				getContentPane().repaint();
				
				getContentPane().add(BorderLayout.CENTER, chartPanel);
				getContentPane().add(BorderLayout.SOUTH, controlPanel);
				getContentPane().add(BorderLayout.WEST, panelButton);
				getContentPane().paintAll(getGraphics());

			}
		});
		controlPanel.add(c_red);


Und hier der addSeries Part, nach Checkbox Haken rausnehmen.

Java:
final XYSeriesCollection dataset = new XYSeriesCollection();

				if (c_red.isSelected())
					dataset.addSeries(RED);

return dataset;
 

Harry Kane

Top Contributor
Das sieht alles ziemlich wirr und unvollständig aus, vor allem, da nie so richtig klar ist, in welcher Klasse man sich gerade befindet.
Du hast ein paar Fragmente in deinem Code, die genau das zu tun scheinen, wozu ich auch raten würde: erzeuge einen ActionListener, der eine Referenz auf einen renderer und einen series index bekommt, hänge diesen Listener an eine JCheckBox, und wenn die JCheckBox betätigt wird, setze je nach state der JCheckBox die serie auf sichtbar oder unsichtbar mittels
Code:
renderer.setSeriesVisible(int series, Boolean flag)
.
Um genauer zu verstehen, was passiert, müsste man den Quellcode von VisibleAction kennen.

Ausserdem hast du Fragmente in deinem Code, die eher kontraproduktiv sind meine oben geäusserte Vemutung unterstützen: Du legst irgendwo eine neue XYSeriesCollection an, und erzeugt dann je nach Status der JCheckBoxen die XYSeries mit dem schönen Namen RED. Wenn die JCheckBox nicht markiert ist, wir die serie RED nicht angelegt, und eine andere Serie hat den series index 0 und wird entsprechend der Einstellungen im renderer rot gezeichnet.
Ausserdem ist es vollkommen unnötig, einen kompletten ChartPanel neu anzulegen (so wie es in der itemStateChanged Methode passiert) , wenn du nur eine serie aus- oder einblenden willst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H JFreeChart Charts überlagern AWT, Swing, JavaFX & SWT 2
C JFreeChart x-Achse mit absteigenden Werten AWT, Swing, JavaFX & SWT 1
K JFreeChart nicht ohne BarChartDemo startklar? AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
B JFreeChart Gantt Höhe Tasks AWT, Swing, JavaFX & SWT 1
V JFreeChart: Tooltip auf Knopfdruck anzeigen AWT, Swing, JavaFX & SWT 2
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
M JFreechart Zoom out AWT, Swing, JavaFX & SWT 2
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
K 2D-Grafik JFreeChart plot.setBackgroundImage() AWT, Swing, JavaFX & SWT 1
K 2D-Grafik JFreeChart DateAxis AWT, Swing, JavaFX & SWT 9
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
D JFreeChart - aktuelle code beispiele AWT, Swing, JavaFX & SWT 11
M JFreeChart in ein File schreiben (bzw. JFrame in ein File Schreiben) AWT, Swing, JavaFX & SWT 2
A JFreeChart in GUI AWT, Swing, JavaFX & SWT 3
E JFreeChart: Timeseries-Chart und Area-Chart "überlappen" lassen AWT, Swing, JavaFX & SWT 6
B JFreeChart-Erweiterungen AWT, Swing, JavaFX & SWT 4
E JFreeChart in einer dynamischen Aufzeichnung neue Serien hinzufügen? AWT, Swing, JavaFX & SWT 7
I XML - JFreeChart AWT, Swing, JavaFX & SWT 15
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
S JFreeChart - Schriftgröße der Legende AWT, Swing, JavaFX & SWT 2
O Swing JFreechart subtitle formatieren AWT, Swing, JavaFX & SWT 3
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
R JFreeChart Plots AWT, Swing, JavaFX & SWT 6
J JFreechart spezielles Balkendiagramm AWT, Swing, JavaFX & SWT 2
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
T JFreeChart Linine einzeichnen AWT, Swing, JavaFX & SWT 2
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D JFreeChart Breite (width) ändern AWT, Swing, JavaFX & SWT 6
A Swing JFreeChart, Gantt, Schichtplan AWT, Swing, JavaFX & SWT 3
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
F Wie lade ich eine CategoryDataset aus XML ins JFreeChart? AWT, Swing, JavaFX & SWT 9
J JFreeChart - mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
A JFreeChart: 2 X-Achsen für ein Dataset AWT, Swing, JavaFX & SWT 2
T JFreeChart export Problem AWT, Swing, JavaFX & SWT 4
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
D JFreechart maximalangezeigter Wertebereich AWT, Swing, JavaFX & SWT 3
B AWT [JFreeChart] malt nicht so wie ich will :-( AWT, Swing, JavaFX & SWT 2
B JFreeChart Balkendiagramm ActionEvent AWT, Swing, JavaFX & SWT 2
L Labels sichtbar - JFreeChart AWT, Swing, JavaFX & SWT 5
A Schachbrettartiges Diagramm mit JFreeChart AWT, Swing, JavaFX & SWT 4
E JFreeChart AWT, Swing, JavaFX & SWT 2
L Gantt Chart - JFreeChart AWT, Swing, JavaFX & SWT 5
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
L JFreeChart Labelrotation AWT, Swing, JavaFX & SWT 2
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
L JFreeChart Balkenanordnung AWT, Swing, JavaFX & SWT 10
L JFreeChart Achsenskalierung AWT, Swing, JavaFX & SWT 4
L JFreeChart - Dataset befüllen AWT, Swing, JavaFX & SWT 2
L JFreeChart - Line Shapes AWT, Swing, JavaFX & SWT 15
N JFreeChart - Basics AWT, Swing, JavaFX & SWT 2
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
L JFreeChart - Legende vertikal AWT, Swing, JavaFX & SWT 5
L JFreeChart - Linienstärke einstellen AWT, Swing, JavaFX & SWT 2
L JFreeChart Einstellungen AWT, Swing, JavaFX & SWT 22
L JFreeChart - Gitterfarbe schwarz AWT, Swing, JavaFX & SWT 4
L JFreeChart StackedBar + Line-Chart kombinieren AWT, Swing, JavaFX & SWT 4
L JFreeChart - Performance bei PNG-Erstellung AWT, Swing, JavaFX & SWT 5
L JFreeChart - Legende beliebig positionieren AWT, Swing, JavaFX & SWT 16
G JFreechart Balken einfärben AWT, Swing, JavaFX & SWT 6
F Probleme mit NumberAxis bei JFreeChart AWT, Swing, JavaFX & SWT 5
G jfreechart (Diagramm speichern mit ein vorgegebenen Namen) AWT, Swing, JavaFX & SWT 6
S JFreeChart neu zeichnen sich das Datenset geändert hat. AWT, Swing, JavaFX & SWT 4
K JFreeChart Eigentschaften des Charts ändern AWT, Swing, JavaFX & SWT 8
G JFreeChart und das updaten AWT, Swing, JavaFX & SWT 7
G Ausser Jfreechart, Chart Programme? AWT, Swing, JavaFX & SWT 11
S Dimensionen JFreeChart AWT, Swing, JavaFX & SWT 5
S JFreeChart Stufendiagramm AWT, Swing, JavaFX & SWT 2
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M JFreeChart Handbuch? AWT, Swing, JavaFX & SWT 8
P JFreeChart - TimeSeriesDiagram AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben