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

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. 开始我的IT博客之旅

    这是一个好的开始,过程很漫长,但我却乐在其中. 在大学之际,这是我的又一个开始,随便写点啦. 想把每一次的过程记录下来 这样以后对自己 对别人都会有所帮助. 好啦 作为一名大三的学生党  加油吧!

  2. Android开发之解决父控件拦截子控件事件问题

    以ViewPager为例: public class TopNewsViewPager extends ViewPager { public TopNewsViewPager(Context cont ...

  3. Mac 下,配置SVN

    Mac 环境下 sv 服务器的配置 本文目录 • 一.创建代码仓库,用来存储客户端所上传的代码 • 二.配置svn的用户权限 • 三.使用svn客户端功能 在Windows环境中,我们一般使用Tort ...

  4. BZOJ1766 : [Ceoi2009]photo

    如果两个矩形相交且不是包含关系,那么完全可以让它们不相交. 将坐标离散化后,设$f[i][j][k]$表示区间$[i,j]$纵坐标不小于$k$的部分的最优解. 对于$f[i][j][k]$,要么枚举分 ...

  5. 【LeetCode OJ】Populating Next Right Pointers in Each Node II

    Problem Link: http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ OK... ...

  6. 关于结构化BOM的思考

    参加了今天的"自主生产音箱类产品BOM结构问题"(即非采购而是制造的音箱)会议,我发现大家在会议上呈现的产品结构对生产计划的层级需求已上升到5层的需求了,又找段会胜要了各位前期就此 ...

  7. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现

    本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...

  8. React-router 要点

    1.关于url中传参的问题 比如我想打开: /articles/detail/101 在url中要传一个参数 /articles/detail/:articleId 路由中:<Route pat ...

  9. Linux中的设备文件与设备号

    设备文件与设备号   在Linux下,一切皆文件,设备也不例外,为了管理这些设备,系统为它们各自都编了号,而每个设备号又分为主设备号和次设备号.主设备号用来区分不同类型的设备,而次设备号用来区分同一类 ...

  10. uva 12654

    dp,用优先队列存,上个节点节点覆盖下来的长度: 不过还不是很明白: #include<cstdio> #include<queue> #include<algorith ...