Kann man ein StackedBarChart und z.B. ein LineChart übereinanderlegen? Irgendwie bin ich nicht auf eine Lösung gekommen.
Hier mein Code:
Dachte es geht mit plot.setDataset(1, dataset2) und plot.setRenderer(1, renderer2).
Hier mein Code:
Java:
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.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class LineStackedBarOverlaid extends ApplicationFrame {
private static final long serialVersionUID = 1L;
public LineStackedBarOverlaid(final String title) {
super(title);
final JFreeChart chart = createChart();
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartPanel);
}
private JFreeChart createChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(4.3, "Product 1 (US)", "Jan 04");
dataset.addValue(5.4, "Product 1 (Europe)", "Jan 04");
dataset.addValue(7.5, "Product 1 (Asia)", "Jan 04");
dataset.addValue(7.3, "Product 2 (US)", "Jan 05");
dataset.addValue(6.7, "Product 2 (Europe)", "Jan 05");
dataset.addValue(6.4, "Product 2 (Asia)", "Jan 05");
dataset.addValue(6.9, "Product 3 (US)", "Jan 06");
dataset.addValue(8.3, "Product 3 (Europe)", "Jan 06");
final CategoryItemRenderer renderer = new BarRenderer();
final CategoryPlot plot = new CategoryPlot();
plot.setDataset(dataset);
plot.setRenderer(renderer);
plot.setOrientation(PlotOrientation.VERTICAL);
plot.setRangeGridlinesVisible(true);
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
dataset2.addValue(9.0, "T1", "Category 1");
dataset2.addValue(7.0, "T1", "Category 2");
dataset2.addValue(8.0, "T1", "Category 3");
dataset2.addValue(6.0, "T1", "Category 4");
dataset2.addValue(6.0, "T1", "Category 5");
dataset2.addValue(20.0, "T1", "Category 6");
dataset2.addValue(5.0, "T1", "Category 7");
dataset2.addValue(4.0, "T1", "Category 8");
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
final JFreeChart chart = ChartFactory.createStackedBarChart(
"Stacked Bar Chart", "Kategorie", "Value", dataset, PlotOrientation.VERTICAL, true, true, false);
final CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
plot.setDataset(1, dataset2);
plot.setRenderer(1, renderer2);
return chart;
}
public static void main(String[] args) {
final LineStackedBarOverlaid demo = new LineStackedBarOverlaid("Stacked Bar Chart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
;
Dachte es geht mit plot.setDataset(1, dataset2) und plot.setRenderer(1, renderer2).