jfreechart實(shí)現(xiàn)動態(tài)圖表

1.生成圖形報表時一般使用制圖工廠ChartFatory類進(jìn)行創(chuàng)建娜遵,只有創(chuàng)建制圖對象jfreechart后才能生成實(shí)際圖片,然后可以設(shè)置圖片邊界兢交,字體等屬性
2.數(shù)據(jù)集合是用來裝載繪圖表所需要的數(shù)據(jù)集
核心對象---dataset接口
3.通過數(shù)據(jù)集合生成的數(shù)據(jù)圖表通過繪圖區(qū)對象進(jìn)行屬性設(shè)置种玛,(背景色曹洽,透明度等)由plot類定義程储,plot有三個子類蹭沛、
3--1.pieplot類:用來繪制餅形圖
3--2,categoryplot類:支持折線圖章鲤,區(qū)域圖等
3--3摊灭,xyplot類:可以具有多個數(shù)據(jù)集合,
4.坐標(biāo)軸對象:axis
4.1:categoryaxis類:對分類軸進(jìn)行設(shè)置咏窿,
4.2:valueaxis類斟或;對數(shù)據(jù)軸進(jìn)行設(shè)置
4.2.1:numberaxis類:對數(shù)值類型數(shù)據(jù)軸進(jìn)行設(shè)置
4.2.2:dateaxis類:對日期軸進(jìn)行設(shè)置
5.abstactRenderer圖片渲染對象:
6.制圖過程:配置jfreechart素征,創(chuàng)建數(shù)據(jù)集合和jfreechart實(shí)例以及設(shè)置圖標(biāo)相關(guān)屬性
6.1獲取圖片:課生成.jpeg,.png格式圖片集嵌,一般由jfreechart組件進(jìn)行管理來生成圖片,

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){
//創(chuàng)建時序圖對象
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();
//縱坐標(biāo)設(shè)定
ValueAxis valueaxis = xyplot.getDomainAxis();
//自動設(shè)置數(shù)據(jù)軸數(shù)據(jù)范圍
valueaxis.setAutoRange(true);
//數(shù)據(jù)軸固定數(shù)據(jù)范圍 30s
valueaxis.setFixedAutoRange(30000D);
valueaxis = xyplot.getRangeAxis();
//valueaxis.setRange(0.0D,200D);
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);
}
}
//Test.java
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame frame=new JFrame("Test Chart");
RealTimeChart rtcp=new RealTimeChart("Random Data","隨機(jī)數(shù)","數(shù)值");
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);
}
});
}
}
https://github.com/qingyibaimao/JFreeChart.git

嗯嗯加點(diǎn)東西御毅,這個東西寫出來時的一個文檔

使用jfreechart技術(shù)實(shí)現(xiàn)數(shù)據(jù)的動態(tài)圖表
1.主頁面:
2.首先介紹下jfreechart根欧,jfreechart是java的一個類包,主要負(fù)責(zé)實(shí)現(xiàn)柱狀圖端蛆,折線圖凤粗,餅圖的動態(tài)圖,從而使數(shù)據(jù)可視化今豆,便于更好更直觀的查看數(shù)據(jù)
3.jfreechart技術(shù)實(shí)現(xiàn):首先配置一個jfreechart自帶類DisplayChart:該類用于將數(shù)據(jù)繪成圖片從而展現(xiàn)出來:(注:該類是就freechart包自帶類嫌拣,只需在web.xml中配置url從而可以訪問即可,不要再自己建一個DisplayChart類呆躲,否則會顯示這個類一直報錯异逐,我再這一點(diǎn)整整苦惱了兩天)

嘿嘿嘿其實(shí)就是一個servlet配置,再次說明插掂,不要再自己建DisplayChart類灰瞻,這個jfreechart的jar包里面有
嗯,該主角了辅甥,本來以為高大上的以為很牛逼酝润,搞清楚之后核心就是兩個方面,一個是創(chuàng)建數(shù)據(jù)集合璃弄,也就是獲取你需要制圖的數(shù)據(jù)要销,可以你自己手動添加,也可以連接數(shù)據(jù)庫獲取數(shù)據(jù)庫值夏块,當(dāng)然也可以再引用其他包自動獲取數(shù)據(jù)蕉陋,必須我后來找的一個實(shí)時獲取本機(jī)cpu捐凭,內(nèi)存,緩沖區(qū)凳鬓,交換區(qū)的信息茁肠,和一個獲取java虛擬機(jī)信息的方法,當(dāng)然也可以和嵌入式結(jié)合缩举,往外面各個地方放點(diǎn)傳感器啊然后將傳感器獲取的數(shù)據(jù)動態(tài)的傳入進(jìn)來做成一個動態(tài)折線圖垦梆,那么就6了,當(dāng)然我后來寫的時候又一次突然想起來電腦的任務(wù)管理器里面仅孩,可以動態(tài)追蹤C(jī)PU使用率啊什么托猩,頓時感覺好牛逼,可是我再網(wǎng)上巴拉了好久辽慕,很遺憾沒找到相關(guān)的類京腥,好了回歸正題
剛說到核心之一的創(chuàng)建數(shù)據(jù)集合,數(shù)據(jù)有了溅蛉,那就剩下制圖了公浪,jfreechart里面包裝了制作各種圖的方法,只需要引用就行船侧, 當(dāng)然對這些圖的美化也是各種各樣
舉個栗子吧:
第一個jdbc餅圖欠气,額就是我暑假留校這一段時間的消費(fèi)情況嗎,把數(shù)據(jù)寫到了數(shù)據(jù)圖里面镜撩,好了看代碼:

額预柒,這一塊其實(shí)就是連接數(shù)據(jù)庫獲取數(shù)據(jù),函數(shù)里面沒啥說的袁梗,就是注意要實(shí)現(xiàn)PieDataset對象宜鸯,引用了這個對象就可以把數(shù)據(jù)返回給jfreechart內(nèi)部,從而在繪圖的時候才能引用這個數(shù)據(jù)

然后遮怜,這一塊就是繪圖啦淋袖,首先實(shí)例JFreeChart組件,想畫圖就全靠這個了奈泪,因此這也是該技術(shù)的一個核心類組件适贸,這一塊每一句后面都添加了注釋是干啥的,不過涝桅,只寫這些是畫不出一個圖的拜姿,這個步驟只是把這個圖需要的數(shù)據(jù)整到一塊,并說明是畫成一個什么樣的圖以及對這個圖細(xì)節(jié)的修改
最后,開始畫圖了

對冯遂,看的沒錯蕊肥,剛剛寫的那兩部分,一個獲取數(shù)據(jù),一個創(chuàng)建了一個制圖對象壁却,但是制圖這個活還是交給jfreechart的一個ServletUtilities類的一個saveChartAsJPEG()方法實(shí)現(xiàn)的批狱,在改方法中引入制圖對象,圖的長和寬以及一個HttpSession對象展东,然后到這里圖片就生成了赔硫,然后圖片有了,可是他在哪盐肃?
這就要用到一直強(qiáng)調(diào)的不用自己建類的DisplayChart爪膊,通過getContextPath()+"/servlet/DisplayChart?filename="+filename

至于后面的輸出問題,怪我是個直男咯一點(diǎn)點(diǎn)css的東西都不想加砸王,就默默做個安靜的后臺碼農(nóng)吧
好了繼續(xù)來個時序圖

這個推盛,就說下數(shù)據(jù)獲取和圖對象的制作吧

是的,獲取隨機(jī)數(shù)啦

然后還是獲取jfreechart對象然后對圖片進(jìn)行渲染處理了谦铃,各個不同圖的區(qū)別就在于一個制圖對象的不同耘成,每個圖有相對應(yīng)的方法去處理相應(yīng)的對象,而圖片制作和獲取圖片的方法是一模一樣的
然后你以為結(jié)束了驹闰?
不瘪菌,還有一個獲取本機(jī)電腦信息的類啊:sigar包
這個包疮方,可以獲取很多東西控嗜,
cpu信息

每塊CPU的使用信息

內(nèi)存和交換區(qū)信息

硬盤信息

以及我自己也不知到的是什么東西的東西

這些是總結(jié)官方文檔里的方法寫的茧彤,總結(jié)一下骡显,電腦砸了吧,可以換新的了曾掂,2333
就大致說下獲取CPU惫谤,內(nèi)存,交換區(qū)的方法吧
先看下cpu使用信息吧珠洗,還是挺不錯得溜歪,夠用了

至于內(nèi)存的話

4G真的不夠用啊,感覺8G最低標(biāo)配啊许蓖,攢錢買吧
看如何獲取CPU信息吧蝴猪,是的就這3個步驟,實(shí)例化sigar膊爪,獲取里面的cpu對象自阱,然后使用各種方法了,就是那么簡單米酬,內(nèi)存和其他的也是一樣的

獲取交換區(qū)的
獲取內(nèi)存信息

額沛豌,有點(diǎn)少,可是赃额,沒辦法加派,結(jié)束了叫确,另附下github地址里面有完整代碼
https://github.com/qingyibaimao/JFreeChart/releases/tag/JFreechart

代碼截圖沒插進(jìn)來,已經(jīng)1點(diǎn)了該睡覺了有點(diǎn)懶就不加了芍锦。代碼可以去github里看
大家晚安竹勉,明天繼續(xù)努力,學(xué)習(xí)練習(xí)做項(xiàng)目娄琉,早日賺錢給大哥買小院子饶米,嗯,就是這樣车胡,Bye

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檬输,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匈棘,更是在濱河造成了極大的恐慌丧慈,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件主卫,死亡現(xiàn)場離奇詭異逃默,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)簇搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門完域,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘩将,你說我怎么就攤上這事吟税。” “怎么了姿现?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵肠仪,是天一觀的道長。 經(jīng)常有香客問我备典,道長异旧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任提佣,我火速辦了婚禮吮蛹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拌屏。我一直安慰自己潮针,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布槐壳。 她就那樣靜靜地躺著然低,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雳攘,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天带兜,我揣著相機(jī)與錄音,去河邊找鬼吨灭。 笑死刚照,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喧兄。 我是一名探鬼主播无畔,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吠冤!你這毒婦竟也來了浑彰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拯辙,失蹤者是張志新(化名)和其女友劉穎郭变,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涯保,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诉濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夕春。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片未荒。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖及志,靈堂內(nèi)的尸體忽然破棺而出片排,到底是詐尸還是另有隱情,我是刑警寧澤困肩,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布划纽,位于F島的核電站脆侮,受9級特大地震影響锌畸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜靖避,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一潭枣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幻捏,春花似錦盆犁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春伊佃,著一層夾襖步出監(jiān)牢的瞬間窜司,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工航揉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塞祈,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓帅涂,卻偏偏與公主長得像议薪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子媳友,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理斯议,服務(wù)發(fā)現(xiàn),斷路器醇锚,智...
    卡卡羅2017閱讀 134,639評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,874評論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法捅位,類相關(guān)的語法,內(nèi)部類的語法搂抒,繼承相關(guān)的語法艇搀,異常的語法,線程的語...
    子非魚_t_閱讀 31,603評論 18 399