JAVA Swing使用JFreeChart实现折线图绘制
效果如下:

实现步骤:
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实现折线图绘制的更多相关文章
- JFreeChart 之折线图
JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- qt外部数据传入实现动态的折线图绘制
在嵌入式开发中,实现数据收集与显示很常见,对于希望数据稳定的应用来说, 折现图的表现形式很符合条件. 本实现是通过qt的signal-slot来 ...
- Python_散点图与折线图绘制
在数据分析的过程中,经常需要将数据可视化,目前常使用的:散点图 折线图 需要import的外部包 一个是绘图 一个是字体导入 import matplotlib.pyplot as plt fro ...
- [Python Study Notes]折线图绘制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- JFreeChart画折线图
请见Github博客: http://wuxichen.github.io/Myblog/htmlcss/2014/09/01/JFreechartLinechart.html
- OpenGL——折线图柱状图饼图绘制
折线图绘制代码: #include<iostream> //旧版本 固定管线 #include<Windows.h> #include <GL/glut.h> // ...
- Matplotlib数据可视化(4):折线图与散点图
In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...
- java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1. jfreechart-1.0.13.jar 2. ...
随机推荐
- ABAQUS粘弹性边界及地震荷载施加的简单实现(Matlab生成input文件)
思路 粘弹性边界因为能够考虑地基辐射阻尼而使得结构抗震的计算结果更趋于合理,所以在需要考虑结构地基相互作用的结构抗震计算时,是较为常用的地基边界处理和地震荷载施加方法.而ABAQUS软件是经常用来进行 ...
- nginx下目录浏览及其验证功能、版本隐藏等配置记录
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...
- openpyxl 实现excel字母列号与数字列号之间的转换
https://www.cnblogs.com/apple2016/p/9686433.html
- 个人博客作业-Week1
1.五个问题 1) 团队编程中会不会因为人们意见的分歧而耽误时间,最终导致效率降低? 2)软件团队中测试的角色应该独立出来吗 3)对于团队编程,如果没有时间测试他人的新功能,因此就不添加该新功能,那会 ...
- 【ML】ICLR2016_Delving Deeper into Convolutional Networks
ICLR2016_DELVING DEEPER INTO CONVOLUTIONAL NETWORKS Note here: Ballas recently proposed a novel fram ...
- Sprint冲刺第二阶段之6---10天(下)
11月24号——12月8号,这一个时间段学校的电压不是很稳定,时不时会断电,为了冲刺的完整性,我们商量决定把这一时间段做的事情写成一个连贯的小日记.然后统一在整个时间段一起发出来. 经过一个阶段的努力 ...
- 小学四则运算APP 第二阶段冲刺-第五天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是判断题代码,已经实现部分功能,,但是美中不足的是判断错误 panduanset.j ...
- David Silver强化学习Lecture1:强化学习简介
课件:Lecture 1: Introduction to Reinforcement Learning 视频:David Silver深度强化学习第1课 - 简介 (中文字幕) 强化学习的特征 作为 ...
- 『编程题全队』Beta 阶段冲刺博客五
1.提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID) (1) 昨天已完成的工作 孙志威: 1.为新建提醒框添加了正则匹配限制 2.添加了新建Reminder的功能 3.初 ...
- 牛客OI周赛7-普及组
https://ac.nowcoder.com/acm/contest/372#question A.救救猫咪 #include <bits/stdc++.h> using namespa ...