最近一个项目中用到JFreeChart,我的代码。 注释比较全,自己看。
后面带效果图
我的实现方法是 在 实现类 里调用 专用来生成统计图 的方法。
参数传过的是来用于生成统计图的数值。
返回所生成图片的名称
package com.zhh.util;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import com.brief.pojo.InfeNumDTO;
import com.brief.pojo.TranMsg;
/*
*author zhh
*/
public class CreatePic {
/*
* 升降比的柱形图
* 参数indList<InfeNumDTO> ind.infeName=病名 ind.infeNum=升降比*10000(转成int型)
* tmsg.nameX x轴名称 tmsg.nameY y轴名字 msg date
* return 方法所生成图片的名称
*/
public String getBarChart(List<InfeNumDTO> indList, TranMsg tmsg) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Iterator<InfeNumDTO> it = indList.iterator();
while (it.hasNext()){
InfeNumDTO ind = it.next();
String key = ind.getInfeName();
Double value = Double.valueOf(ind.getInfeNum())/100;
if (value != 10000){ //不是新增病种才统计
dataset.addValue(value, key, key); //转成两位小树的百分百
} e