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;
相关推荐
小红薯电商实操课小红书开店实操必学课.mp4
AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
基于java的新能源充电系统设计与实现.docx
吸波材料建模单元周期仿真模拟,参数优化,计算反射损耗,极化角,入射角,等效阻抗等
AGV调度系统的仿真平台(含源码+项目说明+实验结果分析).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
【本体】Internet Download Manager v6.42.26.zip
NLP中文垃圾短信分类系统源码+设计全部资料+文档报告(自然语言处理课设).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!
Python大作业封面.doc
基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开发的安卓的记事本app项目源码(高分期末大作业)基于Android Studio开
操作系统课后题参考答案
几何图霸软件是一个非常强大的三维几何图形绘制工具,可以根据约束条件绘制标准示意图,写相关技术类文章需要绘图时很适用。
《写给大众的健康饮食指南》.mp4
智能相册Piktures v2.19 build 815 for 高级版.mp4
建行开养老金必中58元微信立减金亲测.mp4
Converter视频音频转换器v2.2.5.2解锁VIP版.mp4
车来了v4.59.0高级版 精准实时公交地铁神器.mp4
基于java的招生宣传管理系统设计与实现.docx
iiiicfdfdsffffffffffffffffffff
这是本人期末复习期间的产物,传上来主要是为了方便保存和复习,如有错漏还请谅解。