最近要用到实时曲线图,在网上大概找了一下,有两种实现方式,一种就是JFreeChart的官方实例MemoryUsageDemo.java.通过一个实现java.Swing.Timer的内部类,在其监听器中将实时数据添加进TimeSeries,由于Timer是会实时执行的,所以这个方法倒是没有什么问题,可以参考代码。
另一种方式就是将实时类实现Runnable接口,在其run()方法中,通过无限循环将实时数据添加进TimeSeries,下面是较简单的实现代码:
java 代码
-
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.ChartPanel;
- import org.jfree.chart.JFreeChart;
- import org.jfree.chart.axis.ValueAxis;
- import org.jfree.chart.plot.XYPlot;
- import org.jfree.data.time.Millisecond;
- import org.jfree.data.time.TimeSeries;
- import org.jfree.data.time.TimeSeriesCollection;
-
- public class RealTimeChart extends ChartPanel implements Runnable
- {
- private static TimeSeries timeSeries;
- private long value=0;
-
- public RealTimeChart(String chartContent,String title,String yaxisName)
- {
- super(createChart(chartContent,title,yaxisName));
- }
-
- private static JFreeChart createChart(String chartContent,String title,String yaxisName){
-
- timeSeries = new TimeSeries(chartContent,Millisecond.class);
- TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeSeries);
- JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(title,"时间(秒)",yaxisName,timeseriescollection,true,true,false);
- XYPlot xyplot = jfreechart.getXYPlot();
-
- ValueAxis valueaxis = xyplot.getDomainAxis();
-
- valueaxis.setAutoRange(true);
-
- valueaxis.setFixedAutoRange(30000D);
-
- valueaxis = xyplot.getRangeAxis();
-
-
- return jfreechart;
- }
-
- public void run()
- {
- while(true)
- {
- try
- {
- timeSeries.add(new Millisecond(), randomNum());
- Thread.sleep(300);
- }
- catch (InterruptedException e) { }
- }
- }
-
- private long randomNum()
- {
- System.out.println((Math.random()*20+80));
- return (long)(Math.random()*20+80);
- }
- }
-
-
- import java.awt.BorderLayout;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import javax.swing.JFrame;
-
- public class Test
- {
-
-
-
-
- public static void main(String[] args)
- {
- JFrame frame=new JFrame("Test Chart");
- RealTimeChart rtcp=new RealTimeChart("Random Data","随机数","数值");
- frame.getContentPane().add(rtcp,new BorderLayout().CENTER);
- frame.pack();
- frame.setVisible(true);
- (new Thread(rtcp)).start();
- frame.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent windowevent)
- {
- System.exit(0);
- }
-
- });
- }
- }
这两中方法都有一个问题,就是每实现一个图就要重新写一次,因为实时数据无法通过参数传进来,在想有没有可能通过setXXX()方式传进实时数据,那样的话就可以将实时曲线绘制类封装起来,而只需传递些参数即可(或者谁有更好的办法??)。
Copy:
http://favey.iteye.com/blog/112244
分享到:
相关推荐
java中关于JFreeChart实现实时曲线图
JSP+JFreeChart 实现曲线图、柱形图
详细的描述了JfreeChart_sql实现时间曲线图的操作方法!
applet_+_JfreeChart_实现曲线走势图
java 调用jfreechart 实现柱状图、曲线图、饼图,非常简单灵活!超好看!
主要为大家详细介绍了JFreeChart简单实现光滑曲线的绘制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
jfreechart的简单使用,jfreechart根据24小时数据画折线图。自定义x轴y轴刻度,时间间隔为1小时且以整点为折点画折线图。
Java 曲线图 jfreechart。 含jar包,直接运行,注释全。
该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...
用jfreechart实现的曲线图、 柱状图、 堆形柱状图 、柱状曲线图等,完整的工程,导入myeclipse就可以运行
通过文本生成曲线图的示例程序,初学,代码可能不像样,但确实能实现曲线图。算文本读取和图表入门吧。
Struts2+JFreeChart+Myeclipse实现饼状图,柱状图,折线图。
基于spring + JFREECHART DEMO 实现 柱状图 、饼图、折线图、仪表图 支持3D效果 访问路径:如下 http://127.0.0.1/springMvcDemo/bhCdmaShowBar3D
Java JFreeChart类,可以实现饼图、曲线图等图象,效果理想
POI和JFreeChart JAR包 可以让大家方便的实现 利用java导出Excel文件,还可以画出饼图,曲线图 柱状图等哦
通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折线图。如果想生成普通效果的折线图,需要通过工厂类ChartFactory的createLineChart()方法获得JFreeChart类的实例;如果想生成3D效果的折线图...
jfreechart曲线工具,可以实现曲线,饼图,比例图等图形
JFREECHART:开源项目,主要用来生成静态图表,如饼图、柱状图、曲线图、区域图等。纯JAVA应用与实现,可继承到WEB/SWING/SWT等,方便集成到报表中
实现饼状图,柱状图,曲线图等图形统计功能的第三方JAR包:jfreechart-1.0.13,gnujaxp,jcommon-1.0.16