使用JFreeChart绘制实时CPU图表示例
"这篇文档是关于如何使用JFreeChart库创建图表的一个经典实例。JFreeChart是一个Java库,用于生成高质量的2D图表,包括线图、饼图、柱状图、散点图等,广泛应用于数据分析和可视化。" 在Java编程中,JFreeChart是一个强大的工具,它提供了一系列API来帮助开发者生成各种类型的统计图表。这个实例主要展示了如何利用JFreeChart创建实时更新的CPU使用率图表。 首先,导入所需的JFreeChart相关类和其他必要的库,例如`java.awt`和`javax.swing`,这两个包分别提供了图形用户界面(GUI)的基础组件和定时器功能。`org.jfree.chart`包包含所有与图表相关的类。 在`abc`类中定义了一些用于存储CPU使用率数据的变量,如`cpuValue1`, `cpuValue2`, `cpuValue3`,以及三个`TimeSeries`对象,分别是`cpu1`, `cpu2`, `cpu3`,用于追踪不同类型的CPU使用情况。`TimeSeries`类用于存储时间序列数据,它可以随着时间自动清除旧的数据点,保持数据的最新状态。 `TimeSeries`的构造函数接收一个字符串参数作为系列的标识,如"jvm-free", "jvm-total", "jvm-use"。通过`setMaximumItemAge`方法设置每个`TimeSeries`的最大数据项年龄,这里设为10000毫秒,意味着超过这个时间间隔的数据点将被自动移除。 接下来,创建一个`TimeSeriesCollection`对象,它是`TimeSeries`的集合,可以作为一个数据源用于生成图表。将三个`TimeSeries`添加到这个集合中。 为了显示图表,我们需要使用`ChartFactory`类提供的静态工厂方法来创建`JFreeChart`对象。在这个例子中,可能使用了`ChartFactory.createXYLineChart()`方法来创建一个XY线图,参数通常包括图表的标题、x轴标签、y轴标签和数据源。 `JFreeChart`对象创建后,将其添加到`ChartPanel`中,`ChartPanel`是一个可以直接放入Swing容器(如`JApplet`或`JFrame`)的组件,用于显示图表。同时,设置一个`Timer`,每隔一段时间触发一个`ActionListener`,该监听器会更新CPU使用率数据并重新绘制图表,实现动态效果。 最后,`LegendTitle`通常用于设置图表的图例,`ValueAxis`和`NumberAxis`则用于控制x轴和y轴的显示,如刻度、范围等。 总结来说,这个JFreeChart实例展示了如何创建一个实时更新的CPU使用率图表,通过`TimeSeries`跟踪数据,使用`ChartFactory`生成图表,并结合Swing的定时器功能实现动态更新。这对于理解和实践Java中的数据可视化是非常有价值的。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.Timer;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.data.time.*;
/**
* 一个简单的曲线图例子
*
* @author tf date 2007-01-30
*/
public class abc extends JApplet {
private static final long serialVersionUID = 3257566209007171634L;
public double cpuValue1;
public double cpuValue2;
public double cpuValue3;
private TimeSeries cpu1;
private TimeSeries cpu2;
private TimeSeries cpu3;
/**
* 内部类--实现动态随机产生虚拟CPU使用率的值
*
* @author tf
*
*/
public abc() {
cpu1 = new TimeSeries("jvm-free");
cpu2 = new TimeSeries("jvm-total汉字");
cpu3 = new TimeSeries("jvm-use");
cpu1.setMaximumItemAge(10000);
cpu2.setMaximumItemAge(10000);
cpu3.setMaximumItemAge(10000);
TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
// 将所有走势曲线加入到时间条中
timeseriescollection.addSeries(cpu1);
timeseriescollection.addSeries(cpu2);
// timeseriescollection.addSeries(cpu3);
// 创建JFreeChart对象
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(
"JVM-USEING", "TIME", "VALUE", timeseriescollection, true,
true, true);
Font font = new Font("楷体", Font.BOLD, 16);
剩余11页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Ansys Comsol实现力磁耦合仿真及其在电磁无损检测中的应用
- 西门子数控系统调试与配置实战案例教程
- ELM多输出拟合预测模型:简易Matlab实现指南
- 一维光子晶体的Comsol能带拓扑分析研究
- Borland-5技术资料压缩包分享
- Borland 6 技术资料分享包
- UE5压缩包处理技巧与D文件介绍
- 机器学习笔记:深入探讨中心极限定理
- ProE使用技巧及文件管理方法分享
- 增量式百度图片爬虫程序修复版发布
- Emlog屏蔽用户IP黑名单插件:自定义跳转与评论限制
- 安装Prometheus 2.2.1所需镜像及配置指南
- WinRARChan主题包:个性化你的压缩软件
- Neo4j关系数据映射转换测试样例集
- 安装heapster-grafana-amd64-v5-0-4所需镜像介绍
- DVB-C语言深度解析TS流