Java JFreeChart stackedBar mit Intervall erzeugen

cl0udt

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
508
Hallo zusammen,

ich versuche mit dem Framework "JFreeChart" ein stackedBarDiagramm zu erstellen, welches nicht bei 0 beginnt.
Habe ich auch zum Teil hinbekommen (siehe Code). Die Bars die eigentlich aufeinander gestapelt ("gestacked") werden sollen, werden bei mir noch nebeneinander angezeigt. Irgendwie muss es funktionieren, da der der Standard-Renderer sie stacked (dann starten aber alle Bars wieder bei 0...). Hat vielleicht jemand eine Idee? Mir ist auch ein neuer Ansatz recht. Ich brauche stackedBars, die nicht bei 0 anfangen und die Möglichkeit des Exports vom Diagramm als .jpg oder ähnlichem..

Danke schonmal!

Code:
package Main;

import java.awt.Dimension;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.IntervalBarRenderer;
import org.jfree.data.category.DefaultIntervalCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChart extends ApplicationFrame {

	public BarChart(String title) {
		super(title);
		DefaultIntervalCategoryDataset dataset = new
		         DefaultIntervalCategoryDataset(new Double[][]{{2.0, 1.0, 3.0}, {3.0, 2.0, 3.5}}, 
		        		 new Double[][]{{3.0, 2.0, 3.5}, {6.0, 8.0, 5.0}});
		dataset.setCategoryKeys(new Comparable[]{"Eins", "Zwei", "Drei"});
		
		JFreeChart chart = ChartFactory.createStackedBarChart("Diagramm", 
                "Bla", "Blubb",
                dataset, PlotOrientation.HORIZONTAL, false, false, false);
		IntervalBarRenderer renderer = new IntervalBarRenderer();

	      ((CategoryPlot)chart.getPlot()).setRenderer(renderer);
		ChartPanel chartPanel = new ChartPanel(chart, false);
		chartPanel.setPreferredSize(new Dimension(500, 270));
		setContentPane(chartPanel);
		
	}
	
	
	public static void main(String[] args) {
		BarChart demo = new BarChart("Bar Demo 1");
		demo.pack();
		RefineryUtilities.centerFrameOnScreen(demo);
		demo.setVisible(true);
	}
}
 
cl0udt schrieb:
Die Bars die eigentlich aufeinander gestapelt ("gestacked") werden sollen, werden bei mir noch nebeneinander angezeigt.
Ich glaube nicht, dass der IntervalRenderer zum stacken gedacht ist.

Das Problem mit der 0 könnte mit setBase(1) gelöst werden, bin mir da aber nicht sicher.

Export nach JPEG und PNG sind laut FAQ möglich.
 
Danke für die Antwort.

Hast recht, dürfte wohl nicht dafür gedacht sein. Habe es trotzdem durch bissl ausprobieren hinbekommen. Sieht trotzdem ganz gut aus.

Falls jemand daran Interesse hat, einfach PM schicken. Is bissl arbeit das aus dem ganzen Code jetzt rauszusondieren, also falls keiner interessiert ist, spar ich mir die Arbeit :p.

null.jpg
 
Zuletzt bearbeitet:
Zurück
Oben