JAVA Swing使用JFreeChart实现折线图绘制

效果如下:

  

实现步骤:

  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
 61 //         JFreeChart chart = ChartFactory.createXYStepChart("Time line graph", "M", "F", xySeriesCollection, PlotOrientation.HORIZONTAL, false, false, false);
 62         JFreeChart chart = ChartFactory.createTimeSeriesChart("Time line graph", "M", "F", lineDataset, false, false, false);
 63         //设置主标题
 64         chart.setTitle(new TextTitle("A,B网站访问量统计对比图"));
 65         //设置子标题
 66         TextTitle subtitle = new TextTitle("2016年度", new Font("宋体", Font.BOLD, 12));
 67         chart.addSubtitle(subtitle);
 68
 69         chart.setAntiAlias(true);
 70
 71         //设置时间轴的范围。
 72         XYPlot plot = (XYPlot) chart.getPlot();
 73         DateAxis dateaxis = (DateAxis) plot.getDomainAxis();
 74         dateaxis.setDateFormatOverride(new SimpleDateFormat("M"));
 75         dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1));
 76
 77         //设置曲线是否显示数据点
 78         XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plot.getRenderer();
 79         xylinerenderer.setBaseShapesVisible(true);
 80
 81         //设置曲线显示各数据点的值
 82         XYItemRenderer xyitem = plot.getRenderer();
 83         xyitem.setBaseItemLabelsVisible(true);
 84         xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
 85         xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
 86         xyitem.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));
 87         plot.setRenderer(xyitem);
 88
 89         JPanel jPanel = new ChartPanel(chart);
 90
 91
 92         JFrame frame = new JFrame("JFreechart Test");
 93         frame.add(jPanel);
 94         frame.setBounds(0, 0, 800, 600);
 95         frame.setVisible(true);
 96     }
 97
 98     public static void main(String[] args) {
 99         TimeSeriesChart timeSeriesChart = new TimeSeriesChart();
100     }
101 }
时间: 2024-08-03 20:34:51

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

JFreeChart画折线图

package lb;import java.awt.Color;import java.awt.Font;import java.io.File;import java.text.DecimalFormat; import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartFrame;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;im

[Python Study Notes]折线图绘制

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >>文件: 折线图.py >>作者: liu yang >>邮箱: [email protected] >>博客: www.cnblogs.com/liu66blog '''''''''''''''''''''''''''''''''''''''''''''''

JFreeChart在Struts2中实现折线图统计

在Struts2中,用JFreeChart实现折线图统计 前段时间学习了一下JFreeChart,现在来整理一下自己所作的实例. 下面分别用两种方式来实现: 一种是以java应用程序的方式,一种是以web项目程序的方式 需要加入的jar包有:  jcommon-1.0.17.jar . jfreechart-1.0.14.jar(前两个是JFreeChart中所带的,在下载的JFreeChart的lib目录下) . struts2-jfreechart-plugin-2.3.16.3.jar(这

JFreeChart最佳实践:折线图

本文将介绍作者通过Java最佳图形解决方案JFreeChart实现折线图的详细过程. 在这个公司,用到了太多的JfreeChart,今天就对折线图作一个总结,希望对大家有点帮助,我这里直接是与业务逻辑相关的,业务需要的数据加载到数据集等,不过我会作一些注释的,呵,之前有网友建议写注释. 折线图,大可分为两种, (1)X轴值类型为String的. 2)常用的是X轴值是日期的,并且,有时需要满足这样的需求: 1.时间要连续. 2.时间可以设置固定的跨度,比如,2009-02-01,2009-02-0

慕课网实战—《用组件方式开发 Web App全站 》笔记五-折线图组件开发

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 折现图绘制大致步骤 折线图画布 JavaScript CSS 折线图绘制网格线 // 水平网格线 100份 -> 10份 var step = 10; ctx.beginPath(); ctx.lineWidth = 1; ctx.strokeStyle = '#AAAAAA'; window.ctx = c

ggplot2-为折线图和条形图添加误差线

本文更新地址: http://blog.csdn.net/tanzuozhev/article/details/51106089 本文在 http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ 的基础上加入了自己的理解 采用ggplot2绘制折线图和条形图,并添加误差线. ggplot2只能处理 data.frame数据,每列作为一个变量,是一个指标. 以ToothGrowth数据为例,进行处理 tg <

JFreeChart绘制折线图实例

JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. 1 package com.mvc.controller; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 import javax.servlet.http.HttpServletRequest; 7

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

最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1.       jfreechart-1.0.13.jar 2.       jcommon-1.0.16.jar 3.       gnujaxp.jar 先来看一下,最终效果图: 主要是jfreechart-1.0.13.jar,但这三个包要齐全,我已经将所有与jfreechart有关的jar包与本文实例的工程(代码)一同压缩上传了,有兴趣的同学可以下载, 下载地

使用JFreeChart绘制XY折线图(工具类设计)

准备用Java写通信的仿真平台作为毕业设计,相比matlab绘图,Java绘图需要自己去写很多工具类,博主在这采用了JFreeChart的开源解决方案,摸索着自己写了一个XY折线图工具类,话不多说贴源码,源码中写了很多注释,配了一套自己用的绘图样式,需要的童鞋可以借鉴借鉴,希望对你有帮助.源代码已上传我的github上. 首先用Maven引入Jar包 <!-- Java 绘图 --> <dependency> <groupId>jfree</groupId>