SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
java代码
@Controller
public class CityAction { @Autowired
private CityBiz cityBiz; //柱状图
@RequestMapping(value = "getColumnChart")
public ModelAndView getColumnChart(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
throws Exception {
CategoryDataset dataset = getDataSet(cityBiz.findAll());
JFreeChart chart = ChartFactory.createBarChart3D("用户统计报表(所属单位)", // 主标题的名称
"所属单位名称", // X轴的标签
"数量", // Y轴的标签
dataset, // 图标显示的数据集合
PlotOrientation.VERTICAL, // 图像的显示形式(水平或者垂直)
true, // 是否显示子标题
true, // 是否生成提示的标签
true); // 是否生成URL链接 JfreeUtil.setJfreeChart(chart);
// 6. 将图形转换为图片,传到前台
String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());
String chartURL = request.getContextPath() + "/chart?filename=" + fileName;
modelMap.put("chartURLBar", chartURL);
return new ModelAndView("index", modelMap);
} //饼状图
@RequestMapping(value = "getColumnpie")
public ModelAndView getColumnpie(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
throws Exception {
DefaultPieDataset dataset = getDataSetpie(cityBiz.findAll()); JFreeChart chart = ChartFactory.createPieChart3D("用户统计报表(所属单位)", // 主标题的名称
dataset, // 图标显示的数据集合
true, // 是否显示子标题
true, // 是否生成提示的标签
true); // 是否生成URL链接 JfreeUtil.setJfreePie(chart); // 6. 将图形转换为图片,传到前台
String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());
String chartURL = request.getContextPath() + "/chart?filename=" + fileName;
modelMap.put("chartURLPie", chartURL);
return new ModelAndView("index", modelMap);
} //折线图
@RequestMapping(value = "getColumnLine")
public ModelAndView getColumnLine(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
throws Exception {
DefaultCategoryDataset dataset = getDataSetLine(cityBiz.findAll()); JFreeChart chart = ChartFactory.createLineChart("用户统计报表(所属单位)", // 主标题的名称
"所属单位名称", // X轴的标签
"数量", // Y轴的标签
dataset, // 图标显示的数据集合
PlotOrientation.VERTICAL, // 图像的显示形式(水平或者垂直)
true, // 是否显示子标题
true, // 是否生成提示的标签
true); // 是否生成URL链接 JfreeUtil.setJfreeLine(chart); // 6. 将图形转换为图片,传到前台
String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());
String chartURL = request.getContextPath() + "/chart?filename=" + fileName;
modelMap.put("chartURLLine", chartURL);
return new ModelAndView("index", modelMap);
} // 获取柱状图数据集
private CategoryDataset getDataSet(List<City> cityList) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
if (cityList != null && cityList.size() > 0) {
for (City city : cityList) {
dataset.addValue(city.getCount(), city.getCityname(), city.getFruitname());
}
}
return dataset;
} // 获取饼状图数据集
private DefaultPieDataset getDataSetpie(List<City> cityList) {
DefaultPieDataset dataset = new DefaultPieDataset();
// if (cityList != null && cityList.size() > 0) {
// for (City city : cityList) {
// dataset.addValue(city.getCount(), city.getCityname(),
// city.getFruitname());
// }
// } dataset.setValue("北京", 13);
dataset.setValue("深圳", 6);
dataset.setValue("上海", 2);
return dataset;
} // 获取折线图数据集
private DefaultCategoryDataset getDataSetLine(List<City> cityList) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// if (cityList != null && cityList.size() > 0) {
// for (City city : cityList) {
// dataset.addValue(city.getCount(), city.getCityname(),
// city.getFruitname());
// }
// } dataset.addValue(13, "所属单位", "北京");
dataset.addValue(6, "所属单位", "深圳");
dataset.addValue(2, "所属单位", "上海");
dataset.addValue(24, "水果", "香蕉");
dataset.addValue(15, "水果", "梨子");
dataset.addValue(27, "水果", "苹果");
return dataset;
}
}
public class JfreeUtil { // 柱状图
public static void setJfreeChart(JFreeChart chart) {
// 处理图形上的乱码
// 处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
// 处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
// 获取图表区域对象
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
// 获取X轴的对象
CategoryAxis3D categoryAxis3D = (CategoryAxis3D) categoryPlot.getDomainAxis();
// 获取Y轴的对象
NumberAxis3D numberAxis3D = (NumberAxis3D) categoryPlot.getRangeAxis();
// 处理X轴上的乱码
categoryAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理X轴外的乱码
categoryAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴上的乱码
numberAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴外的乱码
numberAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴上显示的刻度,以1作为1格
numberAxis3D.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis3D.setTickUnit(unit);
// 获取绘图区域对象
BarRenderer3D barRenderer3D = (BarRenderer3D) categoryPlot.getRenderer();
// 设置柱形图的宽度
barRenderer3D.setMaximumBarWidth(0.07);
// 在图形上显示数字
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer3D.setBaseItemLabelsVisible(true);
barRenderer3D.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
} // 饼状图
public static void setJfreePie(JFreeChart chart) { // 处理图形上的乱码
// 处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
// 处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
// 获取图表区域对象
PiePlot3D categoryPlot = (PiePlot3D) chart.getPlot();
// 处理图像上的乱码
categoryPlot.setLabelFont(new Font("宋体", Font.BOLD, 15));
// 设置图形的生成格式为(上海 2 (10%))
String format = "{0} {1} ({2})";
categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));
// 使用ChartFrame对象显示图像
} // 折线图
public static void setJfreeLine(JFreeChart chart) {
// 处理图形上的乱码
// 处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
// 处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
// 获取图表区域对象
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
// 获取X轴的对象
CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
// 获取Y轴的对象
NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
// 处理X轴上的乱码
categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理X轴外的乱码
categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴上的乱码
numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴外的乱码
numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
// 处理Y轴上显示的刻度,以1作为1格
numberAxis.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis.setTickUnit(unit);
// 获取绘图区域对象
LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
// 在图形上显示数字
lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
lineAndShapeRenderer.setBaseItemLabelsVisible(true);
lineAndShapeRenderer.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
// 在图形上添加转折点(使用小矩形显示)
Rectangle shape = new Rectangle(10, 10);
lineAndShapeRenderer.setSeriesShape(0, shape);
lineAndShapeRenderer.setSeriesShapesVisible(0, true);
}
}
jsp页面
<div style="text-align: center">
jfreechart _3D柱状图 <br>
<br> 点击显示柱状图<a href="getColumnChart.action">getMajorChart</a> <br>
<br>
<c:if test="${not empty chartURLBar}">
<img src="${chartURLBar}" width=600 height=400 border=0
color=gray>
</c:if>
</div> <div style="text-align: center">
jfreechart _3D饼状图 <br>
<br> 点击显示饼状图<a href="getColumnpie.action">getMajorChart</a> <br>
<br>
<c:if test="${not empty chartURLPie}">
<img src="${chartURLPie}" width=600 height=400 border=0
color=gray>
</c:if>
</div> <div style="text-align: center">
jfreechart _3D折线状图 <br>
<br> 点击显示折线图<a href="getColumnLine.action">getMajorChart</a> <br>
<br>
<c:if test="${not empty chartURLLine}">
<img src="${chartURLLine}" width=600 height=400 border=0
color=gray>
</c:if>
</div>
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>/chart</url-pattern>
</servlet-mapping> </web-app>
jar包jfreechart1.0.13
SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图的更多相关文章
- Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美
Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...
- Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例
目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...
- java 柱状图、折线图、饼状图
1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...
- JupyterLab绘制:柱状图,饼状图,直方图,散点图,折线图
JupyterLab绘图 喜欢python的同学,可以到 https://v3u.cn/(刘悦的技术博客) 里面去看看,爬虫,数据库,flask,Django,机器学习,前端知识点,JavaScrip ...
- Android之自定义控件实现天气温度折线图和饼状图
以前写了个天气的APP,最近把他更新了一个版本,就抽取其中的天气温度折现图这个功能写了这篇博客,来与大家分享,希望对你有所帮助. 效果如图: 代码: MainActivity.Java /**** * ...
- ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动
代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- C# 绘制图表(柱状图,线性图,饼状图)
http://blog.csdn.net/gisfarmer/article/details/3736452 Chart饼状图,每根柱子的宽度: int a = Chart1.Series[" ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- PSP 进度条 柱状图 饼状图
9号 类别 开始时间 结束时间 间隔 净时间 燃尽图 8::00 8:20 0 20分钟 站立会议 8:20 8:50 0 30分钟 读构建之法 9:20 13:20 120分钟 120分钟 四人小组 ...
随机推荐
- C#显示相机实时画面
public partial class Form1 : Form { ICogAcqFifo mAcqFifo2;//定义一个相机对象 private ICogFrameGrabber mFrame ...
- appium之android_uiautomator定位
前言 appium就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 text 1.通过text文本定位语法 new UiSelector() ...
- 大数据学习——Storm+Kafka+Redis整合
1 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- python jieba包用法总结
# coding: utf-8 # ###jieba特性介绍 # 支持三种分词模式: # 精确模式,试图将句子最精确地切开,适合文本分析: # 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非 ...
- mac 打开apach 但无法访问localhost的解决方法
y由于mac系统默认自带了PHP和Apach, 所以可以通过 sudo apachectl start 直接启动apach服务, 此时在浏览器输入http://localhost,会出现It work ...
- ios弹性头部
很久没写博客了,金天有点时间来写下,一直觉得弹性头部很炫,看起来高大上,写起来蛮简单的 层次分析 一共有3层,最底部是图像层,中间是scrollView或者它的子类,最上层是scrollView上面添 ...
- 【Luogu】P3758可乐(矩阵优化DP)
题目链接 一开始想到这可能能用矩阵优化,但以为暴力就能卡过……T成二十分 首先我们回顾一下我们的暴力转移方程 用f[i][j][0/1]表示在i时刻,j点,1不爆炸,0已爆炸的方案数,那么f[i][j ...
- SPOJ QTREE Query on a tree V ——动态点分治
[题目分析] QTREE4的弱化版本 建立出分治树,每个节点的堆表示到改点的最近白点距离. 然后分治树上一直向上,取min即可. 正确性显然,不用担心出现在同一子树的情况(不会是最优解),请自行脑补. ...
- [BZOJ1589] [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果(tarjan缩点 + 记忆化搜索)
传送门 先用tarjan缩点,再记忆话搜索一下 #include <stack> #include <cstdio> #include <cstring> #inc ...
- 刷题总结——瞭望塔(bzoj1038)
题目: Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线 ...