java中利用JFreeChart生成条形统计图(柱形图)

   由于用JFreeChart生成条形统计图比较简单,所以现在简单的总结一下,自己写的,  注释不是很多, 请见谅

下面是代码,首先需要导入两个架包

jcommon-1.0.20.jar
jfreechart-1.0.16.jar


第二步要写生成柱状图要用的数据了

直接在service层写接口和方法


这是在service里写的接口

list 这个方法主要是为了获得需要生成柱状图的数据,Map 集合是把list 放到map里为方便生成柱状图做准备

第三部就是在serviceImpl里写方法了


/**
 * //遍历所有客户的等级类型和缩量
 * @Override
 */
public List  findTypeCustomer() {
String hql="SELECT b.dictItem,COUNT(c.basDict) FROM " +
" CstCustomer c right join c.basDict b" +
" WHERE b.dictType='企业客户等级' GROUP BY b.dictItem";
return this.getHibernateTemplate().find(hql);
}

//

/**
 * 生成柱状图
 * @Override
 */
public Map findAllTypeCustomer() {
List list=this.statisticDao.findTypeCustomer();//获得生成柱状图所需要的客户等级客户数量(直接调的方法)
Map ret=new HashMap();//声明一个map集合

if (list!=null && !list.isEmpty()){//如果集合不为空和null
for(Object[] arr : list){
if (arr!=null && arr.length==2){
System.out.println(arr[0]+"  "+arr[1]);
ret.put((String)arr[0], (Long)arr[1]);
}
}
}
return ret;
}


上面的步骤都写好后,  开始写action


写action方法

先写一个属性
private JFreeChart chart = null;

然后生成get,set方法

public JFreeChart getChart() {
return chart;
}


public void setChart(JFreeChart chart) {
this.chart = chart;
}


下面开始写方法

/**
 * 柱状图。
 * 
 * @return
 */
public String reportBarPic() {
String title = "客户贡献统计图";
Font bigFont = new Font("宋体", Font.BOLD, 22);
Font middleFont = new Font("黑体", Font.BOLD, 14);
Font smallFont = new Font("黑体", Font.BOLD, 12);


chart = ChartFactory.createBarChart(title, "", "",
getBarDataset(), PlotOrientation.VERTICAL, false, false, false);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.getDomainAxis().setCategoryLabelPositions(
CategoryLabelPositions.UP_45);
plot.getDomainAxis().setTickLabelFont(smallFont);
plot.getDomainAxis().setLabelFont(middleFont);
plot.getRangeAxis().setLabelFont(middleFont);
plot.setBackgroundAlpha(0.6f);


chart.setTitle(new TextTitle(title, bigFont));


return "success";
}




private CategoryDataset getBarDataset() {//生成一个柱状图要用的map集合
DefaultCategoryDataset ret = new DefaultCategoryDataset();
Map data = this.StatisticService.findAllTypeCustomer();
for (String depart : data.keySet()) {
ret.addValue(data.get(depart), "", depart);
}
return ret;
}


写完后会报红,然后导包,导包时注意不能倒错包


import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;


这些都做完后,先在action中写





400
300


就可以在  jsp页面导入了




最后附上生成的柱状图,  有点难看  , 不要笑话哦!


你可能感兴趣的:(生成柱状图)