花了四个小时给同学写的。还行吧,原来都没有用过到处找资料写的。

package DrawLine;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.DateTickUnitType;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets; import java.awt.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat; /**
* Created by chaoqun.jiang on 8/3/2016.
*/
public class DrawLine { private JFreeChart freeChart; private JFreeChart rChart = null; //图表对象
public String chartTitle = "title"; //图表标题
public String chartXdesc = "X"; //X轴标题
public String chartYdesc = "Y"; //Y轴标题
public String chartSeriesDesc = "desc"; //曲线说明
public int graphWidth = 600; //默认宽度
public int graphHigh = 400; //默认高度
public String timeFormat = "yyyy-MM-dd"; //yyyy-MM-dd-HH-mm:ss:ms 年yyyy 月MM 日dd 时(大写为24进制,小写为12进制) 分mm 秒ss 微妙ms //定义生成图形样式
public JFreeChart createNewChart(XYDataset xyDataset){
//定义
JFreeChart freeChart = ChartFactory.createTimeSeriesChart(chartTitle, chartXdesc, chartYdesc, xyDataset, true, true, false);
//背景色
freeChart.setBackgroundPaint(Color.WHITE); //设置(x,y)的性质
XYPlot xyPlot = freeChart.getXYPlot();
xyPlot.setOrientation(PlotOrientation.VERTICAL); xyPlot.setBackgroundPaint(Color.lightGray);
xyPlot.setDomainGridlinePaint(Color.white);
xyPlot.setRangeGridlinePaint(Color.white); xyPlot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));//图片区与坐标轴的距离
xyPlot.setDomainCrosshairVisible(true);
xyPlot.setRangeCrosshairVisible(true);
XYItemRenderer renderer = xyPlot.getRenderer(); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateAxis axis = (DateAxis) xyPlot.getDomainAxis();
axis.setTickUnit(new DateTickUnit(DateTickUnitType.DAY, 1, dateFormat)); return freeChart;
} }
package Import;

import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset; import java.io.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; /**
* Created by chaoqun.jiang on 8/3/2016.
*/
public class ImportData { public XYDataset readFromDat(Date start, Date end) throws IOException, ParseException { TimeSeriesCollection dataset = new TimeSeriesCollection(); BufferedReader bufferedReader;
Map<String, String> dataMap = new HashMap<String, String>();
bufferedReader = new BufferedReader(new FileReader("E:\\baozhen_2011.dat")); //按行处理字符串
String valueString = null; TimeSeries series = new TimeSeries("we are null"); while ((valueString = bufferedReader.readLine()) != null) {
String temp = valueString.substring(0, 10);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dateTemp = dateFormat.parse(temp); //如果时间符合要求,就把时间加进去
if (dateTemp.getTime() >= start.getTime() && dateTemp.getTime() <= end.getTime()) {
//转换(x, y)
DateFormat deepDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String deepTemp = valueString.substring(0, 20);
Date newPointTime = deepDateFormat.parse(deepTemp);
Double date = Double.parseDouble(valueString.substring(37, 44));
System.out.println("date:" + newPointTime.toString() + " number:" + valueString.substring(37, 44));
series.addOrUpdate(new Second(newPointTime), new Double(date));
}
} dataset.addSeries(series);
return dataset; } }
package Main;

import DrawLine.DrawLine;
import Import.ImportData;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset; import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* Created by chaoqun.jiang on 8/3/2016.
*/
public class main { public static void main(String[] arg) throws IOException, ParseException { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Scanner scanner = new Scanner(System.in);// 创建输入流扫描器 System.out.println("请输入起始时间:");
String begin = scanner.nextLine();
Date small = dateFormat.parse(begin); System.out.println("请输入结束时间:");
String end = scanner.nextLine();
Date big = dateFormat.parse(end); ImportData importData = new ImportData();
//获得了坐标点
XYDataset xyPoint = importData.readFromDat(small, big); //获得JChart对象
DrawLine drawLine = new DrawLine();
JFreeChart jFreeChart = drawLine.createNewChart(xyPoint); //放到frame里面,显示
ChartFrame frame = new ChartFrame("TestChart", jFreeChart);
frame.pack();
frame.setVisible(true);
} }
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>data</groupId>
<artifactId>data</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!-- https://mvnrepository.com/artifact/org.jfree/jfreechart -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.19</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.jfree/jcommon -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.23</version>
</dependency> </dependencies> </project>

不解释了,好累,我去歇息一下。

JFreeChart的更多相关文章

  1. 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】

    之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...

  2. 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】

    之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...

  3. ZK 使用jfreeChart

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

  4. JFreechart在linux下不显示及中文乱码问题

    一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...

  5. JFreechart 在linux下不显示及中文乱码问题

    一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...

  6. Jfreechart初案例--饼图

    1.action @Controller(value = "pieAction") @Scope("prototype") public class PieAc ...

  7. jfreechart 整合sturts2牛刀小试

    一.增加的jar包 struts2-jfreechart-plugin-2.1.6.jar      在struts2的相应jar包中找 jcommon-1.0.23.jar              ...

  8. jfreeChart柱状图各属性详细设置

    一. 下载与环境配置 此最新版本为 1.0.13 解压jfreechart-1.0.13.zip 将lib目录下的jfreechart-1.0.13.jar .jcommon-1.0.16.jar 复 ...

  9. JFreeChart 使用一 饼图之高级特性

    原文链接:http://www.cnblogs.com/jtmjx/archive/2013/04/23/jfreechart_advantage.html 本文主要讲解JFreeChart中饼图的一 ...

随机推荐

  1. Easyui 设置datagrid 进入编辑状态,保存结束编辑

    在datagrid中如何实现让一行进入编辑状态,修改数据后,保存信息呢? //点击列表变成文本框,进入可编辑状态 $(function () { var doc = $(document), tabl ...

  2. postgresql中的CUBE函数

    数据函数简介添加汇总额外信息 数据 --复杂统计函数 CREATE TABLE t3 (color_type varchar(20), in_date varchar(30),color_count ...

  3. NOI2016滚粗记

    首先明确,博主是个渣渣... 7月19日 出发啦,准备去哈尔滨,临走时爸爸迟迟不肯离去站台口,凝望着我,心理很感动..内心的压力瞬间增大2333,附候车室图片.. 在火车上怎么也睡不着2333 7月2 ...

  4. Linux kernel4.4.12 添加make menuconfig 可选项

    Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...

  5. python supervisor使用

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...

  6. 【krpano】加密XML手动解密分析

    krpano允许对XML文件进行加密,对XML进行相应的保护.加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML.两种加密方式的算法 ...

  7. Unity3D访问Android系统目录

    file:///sdcard/Movies/3D/互动.mp4file:///storage/emulated/0/Movies/3D/互动.mp4/storage/emulated/0/Movies ...

  8. QML杂记

    1.QML编写可视化元素,运行后程序窗口上无显示.检查电脑的显卡是否支持OpenGL,如果支持请更新显卡驱动. 2.加载图片显示QML Image: Cannot open.解决在qml.qrc右击添 ...

  9. sgu 240 Runaway (spfa)

    题意:N点M边的无向图,边上有线性不下降的温度,给固定入口S,有E个出口.逃出去,使最大承受温度最小.输出该温度,若该温度超过H,输出-1. 羞涩的题意 显然N*H的复杂度dp[n][h]表示到达n最 ...

  10. 惊闻Java要收费之后

    今天看到朋友圈里的文章 <Oracle终于要向Java的非付费用户开枪了>,被这个标题吓了一跳,还以为Java要全面收费了.又被标题党骗了. 但是仔细想想,以Oracle公司的尿性,没准哪 ...