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 ...
随机推荐
- 移动端mobiscroll时间插件的调用
话不多说直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- C# 实现邮件发送
要实现邮件发送功能首先需要准备两三个邮箱测试,在这里呢准备了2个QQ邮箱和一个微软邮箱,详细请看代码. 我这里是使用QQ邮箱向另外两个邮箱发送邮件的,在开始写代码之前你需要登录你QQ邮箱进行以下几个操 ...
- Mac效率:配置Alfred web search
// 这是一篇导入进来的旧博客,可能有时效性问题. 想用搜索引擎搜东西,或者查字典时,一般的workflow是:打开浏览器-->打开搜索引擎/字典网站-->输入搜索关键字-->回车. ...
- GDKOI2016 游记
2016.2.19~2.15强行广州koi被虐…… DAY 0 19日下午到达,第六次入住中大西苑宾馆,怂逼抽签抽中外交大使特殊职位,然后就一边看<死神>一边等石门两位室友啦.必须吐槽宾馆 ...
- poj_2195Going Home(最小费用最大流)
poj_2195Going Home(最小费用最大流) 标签: 最小费用最大流 题目链接 题意: 有n*m的矩阵,H表示这个点是一个房子,m表示这个点是一个人,现在每一个人需要走入一个房间,已经知道的 ...
- c与c++d的typedef
一.基本概念剖析 int* (*a[5])(int, char*); //#1 void (*b[10]) (void (*)()); //#2 double(*)() (*pa)[9]; ...
- MFC中菜单的命令响应顺序
响应只可以由Doc,View,MainFrame以及APP四个类完成. 响应顺序是: 点击某菜单项,框架类最先接到菜单命令消息. 框架类把接收到得这个消息交给它的子窗口,即视图类. 视图类根据命令消息 ...
- Oracle_数据库表的约束
Oracle_数据库表的约束 完整性约束分类 域完整性约束 (非空not null,检查check) 实体完整性约束 (唯一unique,主键primary key) 参照完整性约束 (外键forei ...
- include指令与include动作的区别(面试要考)
include指令: 语法格式:<%@ include file=" " ...%> 发生作用的时间:页面转换期间 包含的内容:页面的实际内容 转换成的servlet: ...
- DEDECMS 留言薄模块的使用方法
一.留言薄的安装 留言薄的安装过程和其他插件一样,首先我们进入后台模块管理列表,点击其对应的"安装": 以上步骤,我们完成了留言薄插件的安装. 二.留言薄的卸载 留言薄的卸载,同样 ...