import java.awt.Dimension;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class LineBarOverlaid extends ApplicationFrame {
	
	/**
	 * Serial version UID
	 */
	private static final long serialVersionUID = 1L;
	public LineBarOverlaid(final String title) {
		super(title);
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(90, "Rückmeldungen", "Di, 2009-07-21");
		dataset.addValue(75, "Rückmeldungen", "Mi, 2009-07-22");
		dataset.addValue(74, "Rückmeldungen", "Do, 2009-07-23");
		dataset.addValue(0, "Rückmeldungen", "Fr, 2009-07-24");
		dataset.addValue(0, "Rückmeldungen", "Sa, 2009-07-25");
		dataset.addValue(0, "Rückmeldungen", "So, 2009-07-26");
		dataset.addValue(3, "Rückmeldungen", "Mo, 2009-07-27");
		dataset.addValue(5, "Rückmeldungen", "Di, 2009-07-28");
		dataset.addValue(0, "Rückmeldungen", "Mi, 2009-07-29");
		dataset.addValue(0, "Rückmeldungen", "Do, 2009-07-30");
		dataset.addValue(0, "Rückmeldungen", "Fr, 2009-07-31");
		dataset.addValue(0, "Rückmeldungen", "Sa, 2009-08-01");
		dataset.addValue(0, "Rückmeldungen", "So, 2009-08-02");
		dataset.addValue(0, "Rückmeldungen", "Mo, 2009-08-03");
		dataset.addValue(0, "Rückmeldungen", "Di, 2009-08-04");
		dataset.addValue(0, "Rückmeldungen", "Mi, 2009-08-05");
		dataset.addValue(0, "Rückmeldungen", "Do, 2009-08-06");
		dataset.addValue(0, "Rückmeldungen", "Fr, 2009-08-07");
		dataset.addValue(0, "Rückmeldungen", "Sa, 2009-08-08");
		dataset.addValue(0, "Rückmeldungen", "So, 2009-08-09");
		dataset.addValue(38, "Rückmeldungen", "Mo, 2009-08-10");
		
		final BarRenderer renderer = new BarRenderer();
		renderer.setItemLabelsVisible(true);
		
		final CategoryPlot plot = new CategoryPlot();
		plot.setDataset(dataset);
		plot.setRenderer(renderer);
		
		renderer.setBarPainter(new StandardBarPainter());
		renderer.setShadowVisible(true);
		renderer.setMaximumBarWidth(0.9);
		
		plot.setDomainAxis(new CategoryAxis("Datum"));
		plot.setRangeAxis(new NumberAxis("Stunden"));
		
		plot.setOrientation(PlotOrientation.VERTICAL);
		plot.setRangeGridlinesVisible(false);
		plot.setDomainGridlinesVisible(false);
		
		DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
		dataset2.addValue(28, "Durchschnitt", "Di, 2009-07-21");
		dataset2.addValue(28, "Durchschnitt", "Mi, 2009-07-22");
		dataset2.addValue(28, "Durchschnitt", "Do, 2009-07-23");
		dataset2.addValue(28, "Durchschnitt", "Fr, 2009-07-24");
		dataset2.addValue(28, "Durchschnitt", "Sa, 2009-07-25");
		dataset2.addValue(28, "Durchschnitt", "So, 2009-07-26");
		dataset2.addValue(28, "Durchschnitt", "Mo, 2009-07-27");
		dataset2.addValue(28, "Durchschnitt", "Di, 2009-07-28");
		dataset2.addValue(28, "Durchschnitt", "Mi, 2009-07-29");
		dataset2.addValue(28, "Durchschnitt", "Do, 2009-07-30");
		dataset2.addValue(28, "Durchschnitt", "Fr, 2009-07-31");
		dataset2.addValue(28, "Durchschnitt", "Sa, 2009-08-01");
		dataset2.addValue(28, "Durchschnitt", "So, 2009-08-02");
		dataset2.addValue(28, "Durchschnitt", "Mo, 2009-08-03");
		dataset2.addValue(28, "Durchschnitt", "Di, 2009-08-04");
		dataset2.addValue(28, "Durchschnitt", "Mi, 2009-08-05");
		dataset2.addValue(28, "Durchschnitt", "Do, 2009-08-06");
		dataset2.addValue(28, "Durchschnitt", "Fr, 2009-08-07");
		dataset2.addValue(28, "Durchschnitt", "Sa, 2009-08-08");
		dataset2.addValue(28, "Durchschnitt", "So, 2009-08-09");
		dataset2.addValue(28, "Durchschnitt", "Mo, 2009-08-10");
		DefaultCategoryDataset dataset3 = new DefaultCategoryDataset();
		dataset3.addValue(60, "Plankapazität", "Di, 2009-07-21");
		dataset3.addValue(60, "Plankapazität", "Mi, 2009-07-22");
		dataset3.addValue(60, "Plankapazität", "Do, 2009-07-23");
		dataset3.addValue(60, "Plankapazität", "Fr, 2009-07-24");
		dataset3.addValue(0, "Plankapazität", "Sa, 2009-07-25");
		dataset3.addValue(0, "Plankapazität", "So, 2009-07-26");
		dataset3.addValue(60, "Plankapazität", "Mo, 2009-07-27");
		dataset3.addValue(60, "Plankapazität", "Di, 2009-07-28");
		dataset3.addValue(60, "Plankapazität", "Mi, 2009-07-29");
		dataset3.addValue(60, "Plankapazität", "Do, 2009-07-30");
		dataset3.addValue(60, "Plankapazität", "Fr, 2009-07-31");
		dataset3.addValue(0, "Plankapazität", "Sa, 2009-08-01");
		dataset3.addValue(0, "Plankapazität", "So, 2009-08-02");
		dataset3.addValue(60, "Plankapazität", "Mo, 2009-08-03");
		dataset3.addValue(60, "Plankapazität", "Di, 2009-08-04");
		dataset3.addValue(60, "Plankapazität", "Mi, 2009-08-05");
		dataset3.addValue(60, "Plankapazität", "Do, 2009-08-06");
		dataset3.addValue(60, "Plankapazität", "Fr, 2009-08-07");
		dataset3.addValue(0, "Plankapazität", "Sa, 2009-08-08");
		dataset3.addValue(0, "Plankapazität", "So, 2009-08-09");
		dataset3.addValue(60, "Plankapazität", "Mo, 2009-08-10");
		
		final CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
		plot.setDataset(1, dataset2);
		plot.setRenderer(1, renderer2);
        plot.setDataset(2, dataset3);
        final CategoryItemRenderer renderer3 = new LineAndShapeRenderer();
        plot.setRenderer(2, renderer3);
        
        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
        
        plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);
        plot.getRangeAxis().setRange(0, 100); // legt Größe der Y-Achse fest (min, max)
        
        final JFreeChart chart = new JFreeChart(plot);
        chart.setTitle("Rückmeldungen für Arbeitsplatz 330301 FLACHSCHL.MITTEL");
        
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new Dimension(1000, 450));
        setContentPane(chartPanel);
        chartPanel.setRangeZoomable(false);
        
	}
	
	public static void main(String args[]) {
		
		final LineBarOverlaid overlaid = new LineBarOverlaid("Line- and Barchart overlaid");
		overlaid.pack();
		RefineryUtilities.centerFrameOnScreen(overlaid);
		overlaid.setVisible(true);
	}
	
}