package com.test;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Rectangle2D;
import java.sql.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
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.NumberTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class LineCharts extends ApplicationFrame{
public LineCharts(String title) {
super(title);
final CategoryDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
private CategoryDataset createDataset()
{
String series1 = "1";
String series2 = "2";
String series3 = "3";
String type1 = "1";
String type2 = "2";
String type3 = "3";
String type4 = "4";
String type5 = "5";
String type6 = "6";
String type7 = "7";
String type8 = "8";
String type9 = "9";
String type10 = "10";
String type11 = "11";
String type12 = "12";
// 建立dataset
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// 以下可以动态添加数据
dataset.addValue(30, series1, type1);
dataset.addValue(90, series1, type2);
dataset.addValue(120, series1, type3);
dataset.addValue(350, series1, type4);
dataset.addValue(360, series1, type5);
dataset.addValue(410, series1, type6);
dataset.addValue(450, series1, type7);
dataset.addValue(520, series1, type8);
dataset.addValue(580, series1, type9);
dataset.addValue(600, series1, type10);
dataset.addValue(30, series1, type11);
dataset.addValue(90, series1, type12);
dataset.addValue(152, series2, type1);
dataset.addValue(350, series2, type2);
dataset.addValue(400, series2, type3);
dataset.addValue(450, series2, type4);
dataset.addValue(520, series2, type5);
dataset.addValue(350, series2, type6);
dataset.addValue(500, series2, type7);
dataset.addValue(550, series2, type8);
dataset.addValue(600, series2, type9);
dataset.addValue(530, series2, type10);
dataset.addValue(152, series2, type11);
dataset.addValue(350, series2, type12);
dataset.addValue(100, series3, type1);
dataset.addValue(150, series3, type2);
dataset.addValue(170, series3, type3);
dataset.addValue(190, series3, type4);
dataset.addValue(250, series3, type5);
dataset.addValue(290, series3, type6);
dataset.addValue(350, series3, type7);
dataset.addValue(550, series3, type8);
dataset.addValue(600, series3, type9);
dataset.addValue(350, series3, type10);
dataset.addValue(100, series3, type11);
dataset.addValue(150, series3, type12);
return dataset;
}
private JFreeChart createChart(final CategoryDataset dataset)
{
// 建立chart
JFreeChart chart = ChartFactory.createLineChart(
"价格走势图", // chart title
"时间", // domain axis label
"价格", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
true // urls
);
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
CategoryPlot plot = chart.getCategoryPlot();
// 横轴、纵轴显示的标题
plot.setDomainAxis(new CategoryAxis(""));
plot.setRangeAxis(new NumberAxis("分数"));
plot.setRangeGridlinesVisible(true);
// 设置是否显示垂直网格线
plot.setDomainGridlinesVisible(true);
// customise the range axis...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
// 数据轴精度
rangeAxis.setTickUnit(new NumberTickUnit(50));
rangeAxis.setLowerBound(0);
rangeAxis.setUpperBound(600);
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setAutoRangeIncludesZero(true);
rangeAxis.setUpperMargin(0.20);
rangeAxis.setLabelAngle(Math.PI / 2.0);
CategoryAxis axis = plot.getDomainAxis();//获取x轴
chart.getLegend().setItemFont(new Font ("黑体",Font.BOLD,12));//设置底部中文乱码
axis.setTickLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴坐标上的文字
axis.setLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴的标题文字
numberAxis.setTickLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴坐标上的文字
numberAxis.setLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴的标题文字
chart.getTitle().setFont(new Font("黑体",Font.BOLD,18));//设置标题文字
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true);
renderer.setSeriesPaint(3,Color.red);
renderer.setSeriesLinesVisible(3,false);
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示折点数据
renderer.setItemLabelsVisible(true); */
}
public static void main(final String[] args)
{
final LineCharts demo = new LineCharts("Java Chart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
作者: Tiafang
发布时间: 2010-09-15