package com.gamemag.web.statistics;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;
import com.gamemag.entity.player.Tasks;
publicclass TaskBarChart {
privatestatic CategoryDataset createDataset(List taskNum,
List<Tasks> tasksList) {
String s = "合计";
DefaultCategoryDataset defaultcategorydateaset = new DefaultCategoryDataset();
for (int i = 0; i < tasksList.size(); i++) {
String t_name = tasksList.get(i).getT_name();
String num = taskNum.get(i).toString();
defaultcategorydateaset.addValue(Integer.parseInt(num), s, t_name);
}
return defaultcategorydateaset;
}
// 创建JFreeChar对象
privatestatic JFreeChart createChart(CategoryDataset categoydataset) {
JFreeChart jfreechart = ChartFactory.createBarChart("合计", // 图表标题
null,// x轴的显示标签
null, // y轴的显示标签
categoydataset,// 数据集
PlotOrientation.VERTICAL,// 图表方向:水平垂直
true, // 是否生成图例
true,// 是否生成工具
false// 是否生成URL链接
);
// 解决标题乱码
CategoryPlot categoryplot = jfreechart.getCategoryPlot();
CategoryAxis domainAxis = categoryplot.getDomainAxis();// x轴
ValueAxis numberaxis = categoryplot.getRangeAxis(); // y轴
TextTitle t = jfreechart.getTitle();
t.setFont(new Font("宋体", Font.BOLD, 16));// 标题文字
domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// x轴标题文字
domainAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// x轴坐标上文字
domainAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
numberaxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// y轴标题文字
numberaxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// y轴坐标上文字
numberaxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
numberaxis.setUpperMargin(0.1);//设置最高的一个柱与图片顶端的距离(最高柱的10%)
jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 10));// 图例文字
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT); // 图例居右
//jfreechart.getLegend().setBackgroundPaint(Color.gray);// 图例背景色
jfreechart.setBorderStroke(new BasicStroke(1));// 设置边框宽度
jfreechart.setBackgroundPaint(Color.white); // 设置背景颜色
BarRenderer renderer = new BarRenderer();
//renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//renderer.setBaseItemLabelsVisible(true);//显示每个柱的数值
renderer.setShadowVisible(false);//显示阴影
renderer.setMaximumBarWidth(0.03);// 设置柱子宽度
renderer.setSeriesPaint(0, Color.blue);// 设置柱子颜色
categoryplot.setRenderer(renderer);
categoryplot.setBackgroundPaint(Color.white);
categoryplot.setDomainGridlinePaint(Color.white);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeGridlinePaint(Color.black);
categoryplot.setNoDataMessage("No data available");
// categoryplot.setDomainGridlinePaint(Color.black); //设置纵坐标网格线(平分柱子)
// categoryplot.setRangeGridlinePaint(Color.blue);//设置纵坐标网格线
CategoryAxis categoryaxis = categoryplot.getDomainAxis(); // 横轴上的 Lable
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 45度倾斜
return jfreechart;
}
publicstatic String generateBarChart(HttpSession session, PrintWriter out,
List taskNum, List<Tasks> tasksList) throws IOException {
String filename = null;
CategoryDataset categoryDateset = createDataset(taskNum, tasksList);
JFreeChart chart = createChart(categoryDateset);
/**
* File directory = new File(".");
* System.out.println(directory.getCanonicalPath()+"=========="+img_path);
*
* FileOutputStream fos_jpg = null; try {
* fos_jpg = new FileOutputStream("fruit.jpg");
* ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400,300,null);
* } finally {
* try {
* fos_jpg.close();
* } catch (Exception e) {} }
**/
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
try {
filename = ServletUtilities.saveChartAsPNG(chart, 600, 320, info,
session);
ChartUtilities.writeImageMap(out, filename, info, false);
} catch (IOException e) {
e.printStackTrace();
}
out.flush();
return filename;
}
}
<!-- jfreechar 配置web.xml -->
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
// 调用方法
TaskBarChart bar = new TaskBarChart();
HttpSession session = ServletActionContext.getRequest().getSession();
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
filename = bar.generateBarChart(session, out , taskNum , tasksList);
filename = "/DisplayChart?filename=" + filename;
相关推荐
jfreeChar 柱状图应用的一个实例,
因为最近要用混合图,网上找了一些资料,研究jfreechar 混合图 折线图+柱形图(在一个图中展示,双Y轴,共用X轴,能适用于大部分功能) 别加上 jfreechar的文档
JFreeChar制作饼图和柱状图 需要jcommon-1.0.0-rc1.jar包和jfreechart-1.0.0-rc1.jar包
jfreechar 实现生成柱状图,饼图,曲线,没有调用正在的数据库数据,用的到的可以看看。
JFreeChar 动态横向柱状图,带纵向滚动条,可根据数据自动计算滚动条长度,可自定义系统柱子颜色,定时刷新
JFreeChar图表生成柱状图和饼状图实例源代码。
运用jfreechar插件在项目开发中针对数据库数据进行统计,将数据信息一统计图的方式显示出来,主要有:柱状图,饼图,线形图...
使用JFreeChar,实现柱状图,饼形图,线性图
jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图 直接导入eclipse 或myeclipse 即可运行,里面含有lib ,及运行详细说 如:<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...
包含所有的jfreechar画的饼状图、柱状图、曲线图所有代码都是本人自己编写并且能运行出结果的。
java实现柱状图、饼状图、曲线图等。一个简单的java类就搞定。再加一个jar
发现有关JFreeChar 拖拉的东西网上资源忒少,所以就花了点时间去研究了一下。这里面有柱状图,甘特图,折线图等拖拉的例子,相信对那些正在研究JFreeChar 和正在为JFreeChar 图形拖拉问题困扰的人有所帮助。
JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
bar charts (regular and stacked, with an optional 3D effect):柱状图 line and area charts:曲线图 scatter plots and bubble charts time series, high/low/open/close charts and candle stick charts:...
生成饼状图 生成单组柱状图 生成单组柱状图 生成堆积柱状图 生成折线图 柱状图
JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。...
饼图,柱形图,曲线图!JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛...
直接导入myEclipse即可,采用jsp+servlet+dao框架
我用java和jfreechar写的柱状图之后采用SVG显示出来。以用来业务展示希望对大家有帮助
本JfreeChar实例介绍了三种常见的图例,即柱状图、线性图、饼状图,下载后导入eclipse工程中即可使用