# JFreechart Balken einfärben



## Gast2 (12. Jul 2009)

Hallo zusammen,

ich hab hier mal ein kleine Beispiel für ein 3 Balken diagramm, weiß jemand wie ich den balken für jede serie eine andere Farbe geben kann. ich habs unten schon mal versucht mit grün aber der Balken will nicht gründ werden.

```
package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.text.NumberFormat;

import javax.swing.JFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.TextAnchor;

public class BarChartFrame extends JFrame {

	private ChartPanel chartpanel;

	public BarChartFrame() {
		super(" Chart");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		CategoryDataset categorydataset = createDataset();
		JFreeChart jfreechart = createChart(categorydataset);
		chartpanel = new ChartPanel(jfreechart);
		add(chartpanel, BorderLayout.CENTER);
		setSize(400, 400);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private CategoryDataset createDataset() {

		DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();

		defaultcategorydataset.setValue(5, "serie1", "cat1");
		defaultcategorydataset.setValue(1, "serie2", "cat1");
		defaultcategorydataset.setValue(15, "serie1", "cat2");
		defaultcategorydataset.setValue(25, "serie2", "cat2");
		defaultcategorydataset.setValue(35, "serie1", "cat3");
		defaultcategorydataset.setValue(45, "serie2", "cat3");

		return defaultcategorydataset;
	}

	private JFreeChart createChart(CategoryDataset categorydataset) {
		JFreeChart jfreechart = ChartFactory.createBarChart3D("Test", "Serie",
				"Value", categorydataset, PlotOrientation.VERTICAL, true, true,
				false);
		CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
		BarRenderer3D renderer = (BarRenderer3D) categoryplot.getRenderer();
		renderer
				.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
		renderer.setBaseItemLabelsVisible(true);
		renderer.setItemLabelAnchorOffset(10D);
		renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
				ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));

		// wird einfach nicht grün!!!
		
		
		renderer.setSeriesPaint(0, Color.GREEN);
		// custombarrenderer3d.setSeriesPaint(1, gp0);
		// custombarrenderer3d.setSeriesPaint(2, gp0);
		categoryplot.setRenderer(renderer);
		NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
		numberaxis.setNumberFormatOverride(NumberFormat.getCurrencyInstance());

		ChartUtilities.applyCurrentTheme(jfreechart);
		return jfreechart;
	}

	public static void main(String[] args) {
		new BarChartFrame();
	}

}
```


----------



## Ebenius (13. Jul 2009)

Ich weiß nicht, ob's daran liegt. Aber willst Du vielleicht [c]setSeries*Fill*Paint(...)[/c] benutzen?

Ebenius


----------



## Gast2 (13. Jul 2009)

Ich hab das aus einem Tutorial, muss ich mal versuchen ich wollte einfach nur die Farbe der Balken ändern bzw. selbst wählen.


----------



## MathiasBauer (13. Jul 2009)

Da bin ich aber gespannt, wie es jetzt wirklich geht...


----------



## Gast2 (13. Jul 2009)

Klappt auch nicht...


----------



## SlaterB (20. Jul 2009)

setSeriesPaint() funktioniert, allerdings kommt am Ende noch 
> ChartUtilities.applyCurrentTheme(jfreechart);
welches alles bzw. manches überschreibt,

setze 
> renderer.setSeriesPaint(0, Color.GREEN);
dahinter


----------



## Gast2 (20. Jul 2009)

SlaterB hat gesagt.:


> setSeriesPaint() funktioniert, allerdings kommt am Ende noch
> > ChartUtilities.applyCurrentTheme(jfreechart);
> welches alles bzw. manches überschreibt,
> 
> ...



ahhh das wäre bitter, schau ich nachher mal nach danke schon mal =)


----------

