效果如下:

  

实现步骤:

  1.导入JAR包

    

    jfreechart官网下载的zip文件中包含这两个jar包

  2.代码编写

 import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.TextAnchor; import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat; public class TimeSeriesChart {
private TimeSeriesChart() { // A网站的访问量统计
TimeSeries timeSeries1 = new TimeSeries("A", Month.class);
// 添加数据
timeSeries1.add(new Month(1, 2016), 154);
timeSeries1.add(new Month(2, 2016), 256);
timeSeries1.add(new Month(3, 2016), 312);
timeSeries1.add(new Month(4, 2016), 489);
timeSeries1.add(new Month(5, 2016), 563);
timeSeries1.add(new Month(6, 2016), 555);
timeSeries1.add(new Month(7, 2016), 359);
timeSeries1.add(new Month(8, 2016), 291);
timeSeries1.add(new Month(9, 2016), 123);
timeSeries1.add(new Month(10, 2016), 438);
timeSeries1.add(new Month(11, 2016), 286); // A网站的访问量统计
TimeSeries timeSeries2 = new TimeSeries("A", Month.class);
// 添加数据
timeSeries2.add(new Month(1, 2016), 124);
timeSeries2.add(new Month(2, 2016), 326);
timeSeries2.add(new Month(3, 2016), 12);
timeSeries2.add(new Month(4, 2016), 567);
timeSeries2.add(new Month(5, 2016), 546);
timeSeries2.add(new Month(6, 2016), 123);
timeSeries2.add(new Month(7, 2016), 222);
timeSeries2.add(new Month(8, 2016), 545);
timeSeries2.add(new Month(9, 2016), 56);
timeSeries2.add(new Month(10, 2016), 543);
timeSeries2.add(new Month(11, 2016), 221); // 定义时间序列的集合
TimeSeriesCollection lineDataset = new TimeSeriesCollection();
lineDataset.addSeries(timeSeries1);
lineDataset.addSeries(timeSeries2); // JFreeChart chart = ChartFactory.createXYStepChart("Time line graph", "M", "F", xySeriesCollection, PlotOrientation.HORIZONTAL, false, false, false);
JFreeChart chart = ChartFactory.createTimeSeriesChart("Time line graph", "M", "F", lineDataset, false, false, false);
//设置主标题
chart.setTitle(new TextTitle("A,B网站访问量统计对比图"));
//设置子标题
TextTitle subtitle = new TextTitle("2016年度", new Font("宋体", Font.BOLD, 12));
chart.addSubtitle(subtitle); chart.setAntiAlias(true); //设置时间轴的范围。
XYPlot plot = (XYPlot) chart.getPlot();
DateAxis dateaxis = (DateAxis) plot.getDomainAxis();
dateaxis.setDateFormatOverride(new SimpleDateFormat("M"));
dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1)); //设置曲线是否显示数据点
XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plot.getRenderer();
xylinerenderer.setBaseShapesVisible(true); //设置曲线显示各数据点的值
XYItemRenderer xyitem = plot.getRenderer();
xyitem.setBaseItemLabelsVisible(true);
xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
xyitem.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));
plot.setRenderer(xyitem); JPanel jPanel = new ChartPanel(chart); JFrame frame = new JFrame("JFreechart Test");
frame.add(jPanel);
frame.setBounds(0, 0, 800, 600);
frame.setVisible(true);
} public static void main(String[] args) {
TimeSeriesChart timeSeriesChart = new TimeSeriesChart();
}
}

JAVA Swing使用JFreeChart实现折线图绘制的更多相关文章

  1. JFreeChart 之折线图

    JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...

  2. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  3. qt外部数据传入实现动态的折线图绘制

    在嵌入式开发中,实现数据收集与显示很常见,对于希望数据稳定的应用来说,               折现图的表现形式很符合条件.               本实现是通过qt的signal-slot来 ...

  4. Python_散点图与折线图绘制

    在数据分析的过程中,经常需要将数据可视化,目前常使用的:散点图  折线图 需要import的外部包  一个是绘图 一个是字体导入 import matplotlib.pyplot as plt fro ...

  5. [Python Study Notes]折线图绘制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  6. JFreeChart画折线图

    请见Github博客: http://wuxichen.github.io/Myblog/htmlcss/2014/09/01/JFreechartLinechart.html

  7. OpenGL——折线图柱状图饼图绘制

    折线图绘制代码: #include<iostream> //旧版本 固定管线 #include<Windows.h> #include <GL/glut.h> // ...

  8. Matplotlib数据可视化(4):折线图与散点图

    In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...

  9. java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)

    最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1.       jfreechart-1.0.13.jar 2.    ...

随机推荐

  1. tmux使用总结

    ctrl+b +%:增加垂直分屏 ctlr+b +左右箭头: 在垂直分屏中移动 ctrl+b+c:新建窗口(不分屏) ctrl+b+数字键: 切换窗口 ctrl+b+d: 断开窗口 tmux  a : ...

  2. C. Make It Equal

    链接 [http://codeforces.com/contest/1065/problem/C] 题意 给你n个高度hi的塔,让你把高的部分切掉,使得最后所有塔一样高,而且每次切的高度之和不大于k ...

  3. 第三周Linux学习报告

    Linux内核源代码简介: arch/x86中内容重点关注 init目录重要,内核启动相关的代码基本上都在init目录下.如main.c等.Start_kernel函数相当于普通C程序的main函数. ...

  4. VIM编辑器常用命令(转)

    转自:https://www.cnblogs.com/Nice-Boy/p/6124177.html

  5. Android之JSON格式数据解析

    查看原文:http://blog.csdn.net/hantangsongming/article/details/42234293 JSON:JavaScript 对象表示法(JavaScript ...

  6. 软件工程——HelloWorld

    #include main(){ printf("Hello World\n"); }

  7. PAT L1-027 出租

    https://pintia.cn/problem-sets/994805046380707840/problems/994805107638517760 下面是新浪微博上曾经很火的一张图: 一时间网 ...

  8. [转帖]Marvell兵败中国4G 创始人去职未来几何

    Marvell兵败中国4G 创始人去职未来几何 (2016-04-12 09:08:30) 2016年的帖子. http://blog.sina.com.cn/s/blog_1542ef86c0102 ...

  9. SQL SELECT INTO

    SQL SELECT INTO 语句 1. SELECT *INTO table1 FROM table //将table的数据复制到 table2中 但是我自己进行试验时, SELECT * INT ...

  10. python 协程库gevent学习--gevent数据结构及实战(四)

    一不留神已经到第四部分了,这一部分继续总结数据结构和常用的gevent类,废话不多说继续. 1.Timeout错误类 晚上在调试调用第三方接口的时候,发现有些接口耗时非常多,觉得应该有个超时接口来限制 ...