JFreeChart绘制折线图实例
JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库。只要下载JFreeChart的类库,导入项目即可使用。下面是一个绘制折线图的实例。各处注释都已经写的比较清晰了。
package com.mvc.controller; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints; import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset; import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON;
import com.mvc.po.User;
import com.mvc.service.UserService; @Controller
public class UserController { @Autowired
private UserService userService; @RequestMapping("getChart.do")
public @ResponseBody String getChart(HttpServletRequest request) throws Exception{ //1. 获得数据集合
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
List<Map<String, Object>> list = userService.query();
Map<String, Object> map = new HashMap<String, Object>(); for(int i = 0; i < list.size(); i++){
map=list.get(i);
dataset.addValue(Double.parseDouble(map.get("orderMoney").toString()), "订单金额", map.get("orderDate").toString());
} //2. 创建柱状图
JFreeChart chart = ChartFactory.createLineChart("订单情况", // 图表标题
"日期", // 目录轴的显示标签
"金额", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
false, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
true // 是否生成URL链接
); //3. 设置整个柱状图的颜色和文字(char对象的设置是针对整个图形的设置)
chart.setBackgroundPaint(ChartColor.WHITE); // 设置总的背景颜色
chart.getLegend(0).setItemFont(new Font("宋体",Font.BOLD,20));
chart.getLegend(0).setItemPaint(Color.BLUE); //4. 获得图形对象,并通过此对象对图形的颜色文字进行设置
CategoryPlot p = chart.getCategoryPlot();// 获得图表对象
p.setNoDataMessage("当前没有数据统计!");
p.setNoDataMessagePaint(Color.RED);
p.setNoDataMessageFont(new Font("宋体",Font.BOLD,20));
p.setBackgroundPaint(ChartColor.WHITE);//图形背景颜色
p.setRangeGridlinePaint(ChartColor.DARK_GREEN);//图形表格颜色
p.setDomainGridlinesVisible(true); //设置背景网格线是否可见
p.setDomainGridlinePaint(Color.GRAY); //设置背景竖网格线颜色
p.setRangeGridlinePaint(Color.GRAY); //设置背景横网格线颜色 //显示节点数据
LineAndShapeRenderer renderer = (LineAndShapeRenderer) p.getRenderer();
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseShapesFilled(true);
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelFont(new Font("Dialog", 1, 14));
p.setRenderer(renderer); //5.解决乱码问题
//(1)图形标题文字设置
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体",Font.BOLD,20));
textTitle.setPaint(Color.BLACK); //(2)图形X轴坐标文字的设置
CategoryPlot cPlot = (CategoryPlot) chart.getPlot();
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
CategoryAxis axis = cPlot.getDomainAxis();
axis.setLabelFont(new Font("宋体",Font.BOLD,15)); //设置X轴坐标上标题的文字
axis.setLabelPaint(Color.BLACK);
axis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //设置X轴坐标上的文字
axis.setTickLabelPaint(Color.BLACK); //(3)图形Y轴坐标文字的设置
ValueAxis valueAxis = cPlot.getRangeAxis();
valueAxis.setLabelFont(new Font("宋体",Font.BOLD,15)); //设置Y轴坐标上标题的文字
valueAxis.setLabelPaint(Color.BLACK);
valueAxis.setTickLabelFont(new Font("sans-serif",Font.BOLD,12));//设置Y轴坐标上的文字
valueAxis.setTickLabelPaint(Color.BLACK); //6. 将图形转换为图片,传到前台
String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());
String chartURL=request.getContextPath() + "/chart?filename="+fileName; return JSON.toJSONString(chartURL);
}
JFreeChart绘制折线图实例的更多相关文章
- SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
java代码 @Controller public class CityAction { @Autowired private CityBiz cityBiz; //柱状图 @RequestMappi ...
- MATLAB实例:绘制折线图
MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- JFreeChart 之折线图
JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...
- 用canvas绘制折线图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php中用GD绘制折线图
php中用GD绘制折线图,代码如下: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // 定 ...
- UUChart的使用--iOS绘制折线图
UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图. 二.下载地址: https://github.com/ZhipingYang/UUChartView 三.使用 第一步.首先我们将下载 ...
- html5绘制折线图
html5绘制折线图详细代码 <html> <canvas id="a_canvas" width="1000" height="7 ...
- Android自己定义组件系列【9】——Canvas绘制折线图
有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了非常多插件,可是非常多时候我们须要依据详细项目自己定义这些图表,这一篇文章我们一起来看看怎样在Android中使用Can ...
随机推荐
- JavaScript(六)函数
函数的声明方式 function name () {} 函数声明 var name = function(){} 函数表达式 所有函数都有返回值 未return 的函数 返回值 是 unde ...
- js 实现复制剪切
原生js实现复制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- 高通secury boot过程
整理内容网盘地址: 链接:https://share.weiyun.com/79c3920b4f2097d93b719b3149a7f3f9 (密码:4jm9cx) 相关内容网站: http://bl ...
- iframe兄弟间和iframe父子间的值传递问题
在网上查了资料.iframe的参数传递问题.有很多答案都是不可行的.现在将收集的资料整理一下.已经验证通过.以下如有问题请及时指正. 1. iframe兄弟之间值传递 举例说明:index页面中有两个 ...
- Echarts---柱状图实现
做Echarts很简单,可以参看官网 http://echarts.baidu.com/index.html 作为程序员我们只需要把静态数据替换成我们自己需要的! 下面看一个自己做的例子: 还是先看看 ...
- cookie/session(过时的写法)
cookie存在客户端的浏览器中,不太安全,容易被窃取,,session被存在服务器中(类似于字典中的value,),服务器会给浏览器返回这个value的key值,下次进来直接根据key取value. ...
- 52e174ef38c96afbbeabe55d2ec53622 我知道这是什么
52e174ef38c96afbbeabe55d2ec53622 我知道这是什么52e174ef38c96afbbeabe55d2ec53622 我知道这是什么52e174ef38c96afb ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
- [bzoj1731] [Usaco2005 dec]Layout 排队布局
差分约束系统...因为题目要求的是1和n的最大距离所以这题就跑最长路.. 对于互相反感的牛(i与j互相反感,彼此距离至少为len,i<j),就有dis[j]-dis[i]>=len.就加一 ...
- Linux系统常用命令权威指南
<一>线上查询及帮助命令(2)1.man man [选项] [命令] 查看命令帮助,命令的词典,更复杂的还有info,但不常用. #man cd-a 显示所有的手册页,不只是显示第一个-f ...