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分钟 四人小组 ... 
随机推荐
- Python 描述符(Descriptor) 附实例
			在 Python 众多原生特性中,描述符可能是最少被自定义的特性之一,但它在底层实现的方法和属性却无时不刻被使用着,它优雅的实现方式体现出 Python 简洁之美. 定义 一个描述符是一个有" ... 
- jsp  jstl标签库   el表达式
			一.JSTL标签是什么? 提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言. 同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-c ... 
- 【LeetCode】Count and Say(报数)
			这道题是LeetCode里的第38道题. 题目要求: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111 ... 
- Codeforces Round #305 (Div. 2) D. Mike and Feet
			D. Mike and Feet time limit per test 1 second memory limit per test 256 megabytes input standard inp ... 
- JavaScript onload
			The onload event occurs immediately after a page or an image is loaded.onload事件当一个页面或是一张图片加载完成时被触发. ... 
- 九度oj 题目1091:棋盘游戏
			题目描述: 有一个6*6的棋盘,每个棋盘上都有一个数值,现在又一个起始位置和终止位置,请找出一个从起始位置到终止位置代价最小的路径: 1.只能沿上下左右四个方向移动 2.总代价是没走一步的 ... 
- 新一代 javascript 模板引擎
			artTemplate-3.0 新一代 javascript 模板引擎 <!DOCTYPE html> <html lang="en"> <head& ... 
- vamare下centos7.0 动态获取ip报错问题
			CentOS7 Failed to start LSB: Bring up/down解决方法 centos7.0中service network restart重启报错的问题 报错信息: /etc/i ... 
- 算法复习——迭代加深搜索(骑士精神bzoj1085)
			题目: Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相 ... 
- 黑匣子_NOI导刊2010提高 (对顶堆)
			题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ... 
