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 ...
随机推荐
- CSS选择器:伪类(图文详解)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 伪类(伪类选择器) 伪类:同一个标签,根据其不同的种状态,有不同的样式. ...
- [原创]在Centos7.2上源码安装PHP、Nginx、Zentao禅道
版本 操作系统:CentOS Linux release 7.2.1511 (Core) PHP:5.6.33 Nginx:1.12.2 MySQL:5.6.38(192.168.1.103的Wind ...
- 盒模型 bug 与触发 bfc
一.margin合并 css经典bug 两个块级元素 分别设置 margin-bottom 和 margin-top 并不能达到预期效果 <style> .up{ width: 200 ...
- 前端学习:html基础学习五
9.HTML表单设计(主要内容<form><input><select>标记) 表单标记 <form>...</form> <form ...
- [转]Linux里的2>&1究竟是什么
我们在Linux下经常会碰到nohup command>/dev/null 2>&1 &这样形式的命令. 首先我们把这条命令大概分解下首先就是一个nohup表示当前用户和系 ...
- PIL遇到问题解决
PIL 全称:Pillow 在使用PIL4.2.1版本读取jpeg文件时,报cannot identify image file,去github源查找原因:https://github.com/pyt ...
- 使用c语言实现linux数据库的操作
前言:上一篇讲解了linux下使用命令行操作数据库,这篇继续讲解怎么使用c语言实现linux数据库的操作. 使用c语言实现环境搭建:既然我们要使用c语言实现linux数据库操作,那么首先我们得先把数据 ...
- Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】
弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了 ...
- [bzoj4410] [Usaco2016 Feb]Fence in
根据ccz181078大爷的题解可得(QAQ,每次肯定是断掉连续一行||一列的栅栏... 贪心地想,一个格子与外面联通,显然是先把短的边界断掉(就像mst那样 但是比较蛋疼的是,因为我们每次断的时候, ...
- BZOJ2441: [中山市选2011]小W的问题
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2441 首先要注意到x1>x3且x5>x3(要是没有这个设定就是树状数组水题了.. ...