import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Shape;
import java.io.File;
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.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.ShapeUtilities;
public class LineChart extends ApplicationFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public LineChart(final String title) {
super(title);
final XYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
/**
* Creates a sample dataset.
*
* @return a sample dataset.
*/
private XYDataset createDataset() {
final XYSeries series1 = new XYSeries("First");
series1.add(1.0, 1.0);
series1.add(2.0, 4.0);
series1.add(3.0, 3.0);
series1.add(4.0, 5.0);
series1.add(5.0, 5.0);
series1.add(6.0, 7.0);
series1.add(7.0, 7.0);
series1.add(8.0, 8.0);
final XYSeries series2 = new XYSeries("Second");
series2.add(1.0, 5.0);
series2.add(2.0, 7.0);
series2.add(3.0, 6.0);
series2.add(4.0, 8.0);
series2.add(5.0, 4.0);
series2.add(6.0, 4.0);
series2.add(7.0, 2.0);
series2.add(8.0, 1.0);
final XYSeries series3 = new XYSeries("Third");
series3.add(3.0, 4.0);
series3.add(4.0, 3.0);
series3.add(5.0, 2.0);
series3.add(6.0, 3.0);
series3.add(7.0, 6.0);
series3.add(8.0, 3.0);
series3.add(9.0, 4.0);
series3.add(10.0, 3.0);
final XYSeries series4 = new XYSeries("Fourth");
series4.add(3.0, 4.0);
series4.add(2.0, 3.0);
series4.add(5.0, 4.0);
series4.add(8.0, 3.0);
series4.add(7.0, 6.0);
series4.add(8.0, 3.0);
series4.add(1.0, 3.0);
series4.add(5.0, 3.0);
final XYSeries series5 = new XYSeries("Fifth");
series5.add(2.0, 4.0);
series5.add(2.0, 3.0);
series5.add(4.0, 4.0);
series5.add(6.0, 3.0);
series5.add(7.0, 6.0);
series5.add(8.0, 2.0);
series5.add(2.0, 3.0);
series5.add(6.0, 1.0);
final XYSeries series6 = new XYSeries("Sixth");
series6.add(3.0, 4.0);
series6.add(4.0, 3.0);
series6.add(5.0, 2.0);
series6.add(6.0, 3.0);
series6.add(7.0, 6.0);
series6.add(8.0, 3.0);
series6.add(9.0, 4.0);
series6.add(10.0, 3.0);
final XYSeries series7 = new XYSeries("Seventh");
series7.add(1.0, 5.0);
series7.add(2.0, 7.0);
series7.add(3.0, 6.0);
series7.add(4.0, 8.0);
series7.add(5.0, 4.0);
series7.add(6.0, 4.0);
series7.add(7.0, 2.0);
series7.add(8.0, 1.0);
final XYSeries series8 = new XYSeries("Eighth");
series8.add(3.0, 1.0);
series8.add(2.0, 7.0);
series8.add(3.0, 3.0);
series8.add(5.0, 5.0);
series8.add(2.0, 4.0);
series8.add(6.0, 7.0);
series8.add(7.0, 7.0);
series8.add(3.0, 8.0);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);
dataset.addSeries(series4);
dataset.addSeries(series5);
dataset.addSeries(series6);
dataset.addSeries(series7);
dataset.addSeries(series8);
return dataset;
}
/**
* Creates a chart.
*
* @param dataset the data for the chart.
*
* @return a chart.
*/
private JFreeChart createChart(final XYDataset dataset) {
// create the chart...
final JFreeChart chart = ChartFactory.createXYLineChart(
"Linien Chart", // chart title
"X", // x axis label
"Y", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
chart.setBackgroundPaint(Color.white);
// final StandardLegend legend = (StandardLegend) chart.getLegend();
// legend.setDisplaySeriesShapes(true);
// get a reference to the plot for further customisation...
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.white);
// plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
// Gitterlinien schwarz färben
plot.setDomainGridlinePaint(Color.black);
plot.setRangeGridlinePaint(Color.black);
plot.setOutlinePaint(Color.black);
plot.setDomainGridlinesVisible(false);
plot.setRangeGridlinesVisible(false);
final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
// renderer.setSeriesLinesVisible(0, true);
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesShape(0, new Rectangle());
// renderer.setSeriesShapesFilled(0, false); // Markierungen bei Punkten hohl oder voll
plot.setRenderer(renderer);
// Linienstärke ändern
plot.getRenderer().setSeriesStroke(0, new BasicStroke(2));
// plot.getRenderer().setSeriesStroke(1, new BasicStroke(5));
// change the auto tick unit selection to integer units only...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return chart;
}
public static void main(final String[] args) {
final LineChart demo = new LineChart("Linien Chart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}