jfreecharts 报表

我们以折线图为例子

第一步,构建数据集


/**
* 获取数据集
* @return
*/
private CategoryDataset getDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(2.8, "冰箱", "1月");
dataset.addValue(4.2, "冰箱", "2月");
dataset.addValue(3.9, "冰箱", "3月");
dataset.addValue(3.8, "冰箱", "4月");
dataset.addValue(4.2, "冰箱", "5月");
dataset.addValue(3.9, "冰箱", "6月");
dataset.addValue(1.7, "冰箱", "7月");
dataset.addValue(4.2, "冰箱", "8月");
dataset.addValue(3.9, "冰箱", "9月");
dataset.addValue(2.5, "冰箱", "10月");
dataset.addValue(4.2, "冰箱", "11月");
dataset.addValue(3.9, "冰箱", "12月");

dataset.addValue(1.2, "彩电", "1月");
dataset.addValue(3.2, "彩电", "2月");
dataset.addValue(4.9, "彩电", "3月");
dataset.addValue(2.5, "彩电", "4月");
dataset.addValue(3.2, "彩电", "5月");
dataset.addValue(1.9, "彩电", "6月");
dataset.addValue(2.7, "彩电", "7月");
dataset.addValue(3.2, "彩电", "8月");
dataset.addValue(3.9, "彩电", "9月");
dataset.addValue(3.0, "彩电", "10月");
dataset.addValue(1.2, "彩电", "11月");
dataset.addValue(1.9, "彩电", "12月");

return dataset;

}



第二步,根据数据集构建折线图


private JFreeChart createChart() {
CategoryDataset dataset = getDataset();
//标题,x轴,y轴,数据集,图标方向,是否显示图例,是否生成工具,是否生成url
JFreeChart line = ChartFactory.createLineChart("折线图", "时间", "销售额(百万)", dataset, PlotOrientation.VERTICAL, true,
true, false);

line.setBackgroundPaint(new Color(200, 200, 255));
//设置标题文字
line.getTitle().setFont(new Font("黑体", Font.BOLD, 18));
//设置底部图例字体
line.getLegend().setItemFont(new Font("黑体", Font.BOLD, 12));

CategoryPlot plot = line.getCategoryPlot();

//网格线的颜色,就是与x轴平行的一条一条的虚线
plot.setRangeGridlinePaint(new Color(70, 70, 170));

//设置图区的背景色
//plot.setBackgroundPaint(new Color(255, 255, 255));

LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();

//设置第一个根线为蓝色加粗
renderer.setSeriesStroke(0, new BasicStroke(2.0f));
renderer.setSeriesPaint(0, new Color(0, 0, 255));

//设置第2根线为红色加粗
renderer.setSeriesStroke(1, new BasicStroke(2.0f));
renderer.setSeriesPaint(1, new Color(255, 0, 0));

//设置数据点可见
renderer.setBaseShapesVisible(true);

//显示数据点的值可见
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);

//获取x轴
CategoryAxis axis = plot.getDomainAxis();
//获取y轴
ValueAxis numberAxis = plot.getRangeAxis();

axis.setLabelFont(new Font("黑体", Font.BOLD, 12));
axis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));

numberAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));
numberAxis.setLabelFont(new Font("黑体", Font.BOLD, 12));

return line;
}





第3步,输出图片


//生成图片
private void createPng() {
JFreeChart jfreechart = createChart();
OutputStream os;
try {
os = new FileOutputStream("d:/line.png");
ChartUtilities.writeChartAsPNG(os, jfreechart, 800, 400);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}



注:附件是代码和支持jar包,包括,折线图,饼图,柱状图的例子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值