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

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

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

jcommon-1.0.20.jar

jfreechart-1.0.16.jar

1306455310277316608.htm

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

直接在service层写接口和方法

1306455310277316608.htm

这是在service里写的接口

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

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

/**

* //遍历所有客户的等级类型和缩量

* @Override

*/

public ListfindTypeCustomer() {

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 MapfindAllTypeCustomer() {

Listlist=this.statisticDao.findTypeCustomer();//获得生成柱状图所需要的客户等级客户数量(直接调的方法)

Mapret=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();

Mapdata = 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页面导入了

reportBarPic.action

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

1306455310277316608.htm


版权声明:本文为weixin_33225892原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。