jar包:
jcommon-1.0.23.jar
jfreechart-1.0.19.jar

maven配置:

        <dependency>
<groupId>jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.19</version>
</dependency> <dependency>
<groupId>jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.23</version>
</dependency>

示例代码:

package com.test;

import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.log4j.Logger;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets; public class CreateChart { // 日志记录
private static Logger logger = Logger.getLogger(CreateChart.class); // 备用颜色
private static final Color color1 = new Color(127, 127, 127);
private static final Color color2 = new Color(136, 0, 21);
private static final Color color3 = new Color(237, 28, 36);
private static final Color color4 = new Color(255, 127, 39);
private static final Color color5 = new Color(255, 242, 0);
private static final Color color6 = new Color(34, 177, 76); /**
* 图片生成
*/
public boolean createChart() {
try {
// 解决中文乱码问题 -- begin
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");// 创建主题样式
standardChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));// 设置标题字体
standardChartTheme.setRegularFont(new Font("黑体", Font.PLAIN, 15));// 设置图例的字体
standardChartTheme.setLargeFont(new Font("黑体", Font.PLAIN, 15));// 设置(时间)轴向的字体
ChartFactory.setChartTheme(standardChartTheme);// 应用主题样式
// 解决中文乱码问题 -- end String title = "jfreeChart数据曲线图";// 标题名称 Map<String, XYDataset> map = createDataset(); // 生成需要格式的数据集 JFreeChart jfreechart = ChartFactory.createTimeSeriesChart( // 创建chart对象
title, // 图标标题
null, // 横轴标题
null, // 纵轴标题
null, // 数据集
true, // 是否显示图例标识
true, // 是否显示toolTips
false // 是否支持超链接
);
jfreechart.setBackgroundPaint(Color.white); // 设置画布背景色 // 获取绘图区对象
XYPlot plot = (XYPlot) jfreechart.getPlot(); // 给绘图区对象设置属性
plot.setOrientation(PlotOrientation.VERTICAL); // 数据区的方向
plot.setBackgroundPaint(Color.lightGray); // 背景色
plot.setDomainGridlinePaint(Color.white); // 分类轴网格线条颜色
plot.setRangeGridlinePaint(Color.white); // 数据轴网格线条颜色
plot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); // 坐标轴到数据区的间距
plot.getRangeAxis().setFixedDimension(40D); // 坐标轴距左边距离 // 设置轴1--数据匹配
NumberAxis axis0 = new NumberAxis("多轴-轴1");
axis0.setLabelFont(new Font("黑体", Font.PLAIN, 12));// y轴字体
plot.setRangeAxis(0, axis0);
plot.setDataset(0, map.get("dataSet1"));
plot.mapDatasetToRangeAxis(0, 0); // 设置轴2--数据匹配
NumberAxis axis1 = new NumberAxis("多轴-轴2");
axis1.setLabelFont(new Font("黑体", Font.PLAIN, 12));// y轴字体
plot.setRangeAxis(1, axis1);
plot.setDataset(1, map.get("dataSet2"));
plot.mapDatasetToRangeAxis(1, 1); // 设置轴3--数据匹配
NumberAxis axis2 = new NumberAxis("多轴-轴3");
axis2.setLabelFont(new Font("黑体", Font.PLAIN, 12));// y轴字体
plot.setRangeAxis(2, axis2);
plot.setDataset(2, map.get("dataSet3"));
plot.mapDatasetToRangeAxis(2, 2); // 坐标轴1--曲线颜色
StandardXYItemRenderer renderer0 = new StandardXYItemRenderer();
renderer0.setSeriesPaint(0, color1);
renderer0.setLegendTextPaint(0, color1);// 设置对应图例字体颜色 renderer0.setSeriesPaint(1, color2);
renderer0.setLegendTextPaint(1, color2);// 设置对应图例字体颜色 plot.setRenderer(0, renderer0); // 坐标轴2--曲线颜色
StandardXYItemRenderer renderer1 = new StandardXYItemRenderer();
renderer1.setSeriesPaint(0, color3);
renderer1.setLegendTextPaint(0, color3);// 设置对应图例字体颜色 renderer1.setSeriesPaint(1, color4);
renderer1.setLegendTextPaint(1, color4);// 设置对应图例字体颜色 plot.setRenderer(1, renderer1); // 坐标轴3--曲线颜色
StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
renderer2.setSeriesPaint(0, color5);
renderer2.setLegendTextPaint(0, color5);// 设置对应图例字体颜色 renderer2.setSeriesPaint(1, color6);
renderer2.setLegendTextPaint(1, color6);// 设置对应图例字体颜色 plot.setRenderer(2, renderer2); // 3. 保存chart图标
String filePath = "D:\\Chart";// 图片保存地址
String fileName = "testJFreeChart";
File fos_jpg = new File(filePath + "/" + fileName + ".jpg "); // 需要保存到的文件地址和名称
if (!fos_jpg.getParentFile().exists()) {
fos_jpg.getParentFile().mkdirs();
}
ChartUtilities.saveChartAsJPEG( //
fos_jpg, // 需要保存到的文件对象
jfreechart, // 统计图表对象
1000, // 宽
600 // 高
);
logger.info("绘图完成!");
} catch (Exception e) {
logger.error(e);
}
return true;
} @SuppressWarnings("deprecation")
private Map<String, XYDataset> createDataset() {
// 定义返回结果集
Map<String, XYDataset> map = new HashMap<String, XYDataset>(); // 轴1数据
TimeSeries axis0_data1 = new TimeSeries("axis0_data1", org.jfree.data.time.Minute.class);
TimeSeries axis0_data2 = new TimeSeries("axis0_data2", org.jfree.data.time.Minute.class);
// 轴2数据
TimeSeries axis1_data1 = new TimeSeries("axis1_data1", org.jfree.data.time.Minute.class);
TimeSeries axis1_data2 = new TimeSeries("axis1_data2", org.jfree.data.time.Minute.class);
// 轴3数据
TimeSeries axis2_data1 = new TimeSeries("axis2_data1", org.jfree.data.time.Minute.class);
TimeSeries axis2_data2 = new TimeSeries("axis2_data2", org.jfree.data.time.Minute.class); for (int i = 0; i < 168; i++) {
// 轴1数据
axis0_data1.add(new Minute(getDate(i)), Math.random() * 10 + 30);
axis0_data2.add(new Minute(getDate(i)), Math.random() * 10 + 30);
// 轴2数据
axis1_data1.add(new Minute(getDate(i)), Math.random() * 100 + 200);
axis1_data2.add(new Minute(getDate(i)), Math.random() * 100 + 200);
// 轴3数据
axis2_data1.add(new Minute(getDate(i)), Math.random() * 1000 + 1000);
axis2_data2.add(new Minute(getDate(i)), Math.random() * 1000 + 1000);
}
TimeSeriesCollection dataSet1 = new TimeSeriesCollection();
TimeSeriesCollection dataSet2 = new TimeSeriesCollection();
TimeSeriesCollection dataSet3 = new TimeSeriesCollection();
// 轴1数据
dataSet1.addSeries(axis0_data1);
// dataSet1.addSeries(axis0_data2);
// 轴2数据
dataSet2.addSeries(axis1_data1);
// dataSet2.addSeries(axis1_data2);
// 轴3数据
dataSet3.addSeries(axis2_data1);
// dataSet3.addSeries(axis2_data2); map.put("dataSet1", dataSet1);
map.put("dataSet2", dataSet2);
map.put("dataSet3", dataSet3); return map;
} /**
* 模拟时间
*/
public Date getDate(int i) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, -i);
return calendar.getTime();
} /**
* test Main
*/
public static void main(String[] args) {
new CreateChart().createChart();
} }

JFreeChart多坐标轴曲线图的更多相关文章

  1. Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性

    场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 在上面 ...

  2. JFreeChart API 说明(转)

    原地址 http://blog.csdn.net/mike_caoyong/article/details/7338160 JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形 ...

  3. JFreeChart自我总结

    想飞就别怕摔 大爷的并TM骂人 JFreeChart自我总结 1.饼图.柱状图.折线图生成的工具类   1 package com.text.util;  2   3 import java.awt. ...

  4. JFreeChart

    花了四个小时给同学写的.还行吧,原来都没有用过到处找资料写的. package DrawLine; import org.jfree.chart.ChartFactory; import org.jf ...

  5. ZK 使用jfreeChart

    前台: <?page title="Grid使用" contentType="text/html;charset=UTF-8"?> <zk x ...

  6. javascript曲线图和面积图Line & Area chart控件功能及下载

    Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...

  7. 8-Highcharts曲线图之对数直线图

    <!DOCTYPE> <html lang='en'> <head> <title>8-Highcharts曲线图之对数直线图</title> ...

  8. asp.net 曲线图

    public void draw(DataTable dt) { //取得记录数量 int count = dt.Rows.Count; //记算图表宽度 int wd = 80 + 20 * (co ...

  9. Jfreechart 乱码

    整个图标分成三部分chart   title,chart 的plot还有chart的   legend三个部分需要对他们分别设置字体就对了. 先看解决方法( 把这几个全部设置了,都搞定了就可以了): ...

随机推荐

  1. IO队列和IO调度

    IO体系概览 先看看本文主题IO调度和IO队列处于整个IO体系的哪个位置,这个IO体系是非常重要的,了解IO体系我们可以对整个IO过程有个全面的认识.虽然一下两下并不清楚IO体系各个部分的细节,但是我 ...

  2. IO之内核buffer----"buffer cache"

    举例 一般情况下,Read,write系统调用并不直接访问磁盘.这两个系统调用仅仅是在用户空间和内核空间的buffer之间传递目标数据. 举个例子,下面的write系统调用仅仅是把3个字节从用户空间拷 ...

  3. 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?

    在C语言中,关键字static的意思是静态,它有三个明显的作用:首先,在函数体内,静态变量具有"记忆"功能,即一个被声明为静态的变量在这一函数被调用过程中其值维持不变.其次,在模块 ...

  4. 【转】[总结]FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...

  5. poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)

    Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...

  6. python爬爬(网友提供学习)

    import urllib2,urllib,os,re def ZZ(url): pathw=os.getcwd() #图片和标题目录 imagetitleregion=r'<div class ...

  7. qt视图选择

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...

  8. JVM结构、GC工作机制详解

      JVM结构.内存分配.垃圾回收算法.垃圾收集器.下面我们一一来看. 一.JVM结构 根据<java虚拟机规范>规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分 ...

  9. NPOI之使用EXCEL模板创建报表

    因为项目中要用到服务器端创建EXCEL模板 无法直接调用EXCEL 查了下发现NPOI很方便很简单就实现了 其中走了点弯路 第一次弄的时候发现输出的值是文本不是数字型无法直接计算公式 然后又发现打开报 ...

  10. EffectiveC#00--选择定义和实现接口,而不是继承

    1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的 基类是描述对象是什么,接口描述对象有某种行为. 2.不能在接口里提供任何成员的 ...