效果如下:

  

实现步骤:

  1.导入JAR包

    

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

  2.代码编写

  1. import org.jfree.chart.ChartFactory;
  2. import org.jfree.chart.ChartPanel;
  3. import org.jfree.chart.JFreeChart;
  4. import org.jfree.chart.axis.DateAxis;
  5. import org.jfree.chart.axis.DateTickUnit;
  6. import org.jfree.chart.labels.ItemLabelAnchor;
  7. import org.jfree.chart.labels.ItemLabelPosition;
  8. import org.jfree.chart.labels.StandardXYItemLabelGenerator;
  9. import org.jfree.chart.plot.XYPlot;
  10. import org.jfree.chart.renderer.xy.XYItemRenderer;
  11. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
  12. import org.jfree.chart.title.TextTitle;
  13. import org.jfree.data.time.Month;
  14. import org.jfree.data.time.TimeSeries;
  15. import org.jfree.data.time.TimeSeriesCollection;
  16. import org.jfree.ui.TextAnchor;
  17.  
  18. import javax.swing.*;
  19. import java.awt.*;
  20. import java.text.SimpleDateFormat;
  21.  
  22. public class TimeSeriesChart {
  23. private TimeSeriesChart() {
  24.  
  25. // A网站的访问量统计
  26. TimeSeries timeSeries1 = new TimeSeries("A", Month.class);
  27. // 添加数据
  28. timeSeries1.add(new Month(1, 2016), 154);
  29. timeSeries1.add(new Month(2, 2016), 256);
  30. timeSeries1.add(new Month(3, 2016), 312);
  31. timeSeries1.add(new Month(4, 2016), 489);
  32. timeSeries1.add(new Month(5, 2016), 563);
  33. timeSeries1.add(new Month(6, 2016), 555);
  34. timeSeries1.add(new Month(7, 2016), 359);
  35. timeSeries1.add(new Month(8, 2016), 291);
  36. timeSeries1.add(new Month(9, 2016), 123);
  37. timeSeries1.add(new Month(10, 2016), 438);
  38. timeSeries1.add(new Month(11, 2016), 286);
  39.  
  40. // A网站的访问量统计
  41. TimeSeries timeSeries2 = new TimeSeries("A", Month.class);
  42. // 添加数据
  43. timeSeries2.add(new Month(1, 2016), 124);
  44. timeSeries2.add(new Month(2, 2016), 326);
  45. timeSeries2.add(new Month(3, 2016), 12);
  46. timeSeries2.add(new Month(4, 2016), 567);
  47. timeSeries2.add(new Month(5, 2016), 546);
  48. timeSeries2.add(new Month(6, 2016), 123);
  49. timeSeries2.add(new Month(7, 2016), 222);
  50. timeSeries2.add(new Month(8, 2016), 545);
  51. timeSeries2.add(new Month(9, 2016), 56);
  52. timeSeries2.add(new Month(10, 2016), 543);
  53. timeSeries2.add(new Month(11, 2016), 221);
  54.  
  55. // 定义时间序列的集合
  56. TimeSeriesCollection lineDataset = new TimeSeriesCollection();
  57. lineDataset.addSeries(timeSeries1);
  58. lineDataset.addSeries(timeSeries2);
  59.  
  60. // JFreeChart chart = ChartFactory.createXYStepChart("Time line graph", "M", "F", xySeriesCollection, PlotOrientation.HORIZONTAL, false, false, false);
  61. JFreeChart chart = ChartFactory.createTimeSeriesChart("Time line graph", "M", "F", lineDataset, false, false, false);
  62. //设置主标题
  63. chart.setTitle(new TextTitle("A,B网站访问量统计对比图"));
  64. //设置子标题
  65. TextTitle subtitle = new TextTitle("2016年度", new Font("宋体", Font.BOLD, 12));
  66. chart.addSubtitle(subtitle);
  67.  
  68. chart.setAntiAlias(true);
  69.  
  70. //设置时间轴的范围。
  71. XYPlot plot = (XYPlot) chart.getPlot();
  72. DateAxis dateaxis = (DateAxis) plot.getDomainAxis();
  73. dateaxis.setDateFormatOverride(new SimpleDateFormat("M"));
  74. dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1));
  75.  
  76. //设置曲线是否显示数据点
  77. XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plot.getRenderer();
  78. xylinerenderer.setBaseShapesVisible(true);
  79.  
  80. //设置曲线显示各数据点的值
  81. XYItemRenderer xyitem = plot.getRenderer();
  82. xyitem.setBaseItemLabelsVisible(true);
  83. xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
  84. xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
  85. xyitem.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));
  86. plot.setRenderer(xyitem);
  87.  
  88. JPanel jPanel = new ChartPanel(chart);
  89.  
  90. JFrame frame = new JFrame("JFreechart Test");
  91. frame.add(jPanel);
  92. frame.setBounds(0, 0, 800, 600);
  93. frame.setVisible(true);
  94. }
  95.  
  96. public static void main(String[] args) {
  97. TimeSeriesChart timeSeriesChart = new TimeSeriesChart();
  98. }
  99. }

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. 【CV】CVPR2015_A Discriminative CNN Video Representation for Event Detection

    A Discriminative CNN Video Representation for Event Detection Note here: it's a learning note on the ...

  2. 分布式版本控制系统Git的安装与使用(作业2)

    (本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103) 分布式版本控制系统Git的安装与使用 一.安装Git b ...

  3. [2017BUAA软工]第零次作业

    第一部分:结缘计算机     你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 我当初选择计算机,是因为:1.北航的前辈对北航计算机专业评价非常高:2.我也喜欢通过编程来代替我完成 ...

  4. PAT 甲级 1044 Shopping in Mars

    https://pintia.cn/problem-sets/994805342720868352/problems/994805439202443264 Shopping in Mars is qu ...

  5. [转帖]以Windows服务方式运行ASP.NET Core程序

    以Windows服务方式运行ASP.NET Core程序 原作者blog: https://www.cnblogs.com/guogangj/p/9198031.htmlaspnet的blog 需要持 ...

  6. ACDsee的安装过程

    http://www.ddooo.com/softdown/76175.htm ACDSee 18中文版安装教程: 1.ACDSee 18分为32位和64位版本,我们先选择合适系统的中文版本开始安装, ...

  7. 当返回值为json字符串时 如何获得其中的json数组

    json数据格式 {"IPPORT":"192.168.0.12","time":"2017-04-05 09:12:06&quo ...

  8. java面向对象的核心思想

    java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...

  9. python主成分分析

    #-*- coding: utf-8 -*- #主成分分析 降维 import pandas as pd #参数初始化 inputfile = '../data/principal_component ...

  10. WPF将数据库和GridView绑定并更改GridView模板

    首先来看一下如何使用GridView,在前台的话代码如下:这里仅仅举出一个例子,GridView是作为子项嵌套在ListView中的,这里的数据源是通过绑定的方式来绑定到GridView中的. < ...