Java畫折線圖

來源:互聯網
上載者:User

標籤:java 折線圖 jfreechart

??? JFreeChart 是開放原始碼網站SourceForge.net 上的一個 JAVA 項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖 ( 普通柱狀圖以及堆棧柱狀圖 )、線圖、地區圖、分布圖、混合圖、甘特圖以及一些儀錶盤等等。

??? 應用jfreechart來畫圖需要兩個jar包:jfreechart.jar和jcommon.jar,直接去官網下載就成:

https://sourceforge.net/projects/jfreechart/files/

?? 下載完成後解壓,然後將jfreechart.jar和jcommon.jar兩個包匯入到需要畫表的項目中,匯入的方法:

右擊項目所在的包,選中Build Path,然後選擇? Configure?Build Path,點擊Libraries,再點擊Add External JARS,將上述兩個包添加進去就可以用啦


最近在寫排序演算法,忽然想對比一下各種排序演算法的實際已耗用時間,所以畫個圖表可以更加直觀的進行比較。


代碼實現畫折線圖

class?chart{?????????//?步驟1:建立CategoryDataset對象(準備資料)?????CategoryDataset?dataset?=?createDataset();??????CategoryDataset?dataset1?=?createDataset1();????//?步驟2:根據Dataset?產生JFreeChart對象,以及做相應的設定??????JFreeChart?freeChart?=?createChart(dataset);?????JFreeChart?freeChart1?=?createChart1(dataset1);?????????????//根據CategoryDataset建立JFreeChart對象????public?static?JFreeChart?createChart(CategoryDataset?categoryDateset){????????????????//?建立JFreeChart對象:ChartFactory.createLineChart??????????JFreeChart?jfreechart?=?ChartFactory.createLineChart("The?Confrontation?Of?Sorts?In?Best?Case",?//?標題????????????????"Sort?By",?????????//categoryAxisLabel?(category軸,橫軸,X軸標籤)????????????????"Spent?Time",??????//?valueAxisLabel(value軸,縱軸,Y軸的標籤)????????????????categoryDateset,??//Dataset??????????????????PlotOrientation.VERTICAL,?false,?//?legend?????????????????false,??????????//Tooltips????????????????false);????????//URLs????????????????//?使用CategoryPlot設定各種參數。??????????CategoryPlot?plot?=?(CategoryPlot)jfreechart.getPlot();??????????????????//?背景色?透明度??????????plot.setBackgroundAlpha(0.5f);??????????????????//?前景色彩?透明度??????????plot.setForegroundAlpha(1.0f);??????????????????//?其他設定?參考?CategoryPlot類??????????LineAndShapeRenderer?renderer?=?(LineAndShapeRenderer)plot.getRenderer();??????????renderer.setBaseShapesVisible(true);?//?series?點(即資料點)可見??????????renderer.setBaseLinesVisible(true);?//?series?點(即資料點)間有連線可見??????????renderer.setUseSeriesOffset(true);?//?設定位移量??????????renderer.setBaseItemLabelGenerator(new?StandardCategoryItemLabelGenerator());??????????renderer.setBaseItemLabelsVisible(true);??????????return?jfreechart;??????}????????public?static?CategoryDataset?createDataset()?{??????????String[]?rowKeys?=?{"Sort"};??????????String[]?colKeys?=?{"HeapSort","ShellSort","BubbleSort","QuickSort","RadixSort","SimpleSort"};??????????????????double[][]?data?=?{{TimeChat.btime_Heap,TimeChat.btime_Shell,TimeChat.btime_Bubble,TimeChat.btime_Quick,TimeChat.btime_Radix,TimeChat.btime_Simple},};???????????//System.out.println(TimeChat.btime_Heap);????????return?DatasetUtilities.createCategoryDataset(rowKeys,?colKeys,?data);??????}????????//最壞情況下?????public?static?JFreeChart?createChart1(CategoryDataset?categoryDateset){????????????????//?建立JFreeChart對象:ChartFactory.createLineChart??????????JFreeChart?jfreechart?=?ChartFactory.createLineChart("The?Confrontation?Of?Sorts?In?Worst?Case",?//?標題????????????????"Sort?By",???????????//categoryAxisLabel?(category軸,橫軸,X軸標籤)?????????????????"Spent?Time",???????//valueAxisLabel(value軸,縱軸,Y軸的標籤)????????????????categoryDateset,????//?Dataset????????????????PlotOrientation.VERTICAL,?false,?//?legend?????????????????false,????????????//Tooltips?????????????????false);??????????//?URLs??????????????????CategoryPlot?plot?=?(CategoryPlot)jfreechart.getPlot();?????????plot.setBackgroundAlpha(0.5f);???????????plot.setForegroundAlpha(0.5f);????????LineAndShapeRenderer?renderer?=?(LineAndShapeRenderer)plot.getRenderer();?????????renderer.setBaseShapesVisible(true);?//?series?點(即資料點)可見?????????renderer.setBaseLinesVisible(true);?//?series?點(即資料點)間有連線可見?????????renderer.setUseSeriesOffset(true);?//?設定位移量?????????renderer.setBaseItemLabelGenerator(new?StandardCategoryItemLabelGenerator());?????????renderer.setBaseItemLabelsVisible(true);?????????return?jfreechart;??????}??????????public?static?CategoryDataset?createDataset1()?{?????????String[]?rowKeys?=?{"Sort"};?????????String[]?colKeys?=?{"HeapSort","ShellSort","BubbleSort","QuickSort","RadixSort","SimpleSort"};????????????????double[][]?data?=?{{TimeChat.wtime_Heap,TimeChat.wtime_Shell,TimeChat.wtime_Bubble,TimeChat.wtime_Quick,TimeChat.wtime_Radix,TimeChat.wtime_Simple},};??????????//System.out.println(TimeChat.btime_Heap);????????return?DatasetUtilities.createCategoryDataset(rowKeys,?colKeys,?data);?????}?????}

將圖表建好之後需要藉助ChartPanel類將其顯示出來,或者可以將產生的圖表以圖片格式儲存到本地,我選擇將它直接顯示出來:

public?class?TimeChart{?????public?static?void?main(String[]?strings){??????????TimeChat?tc?=?new?TimeChat();?//另一個類,初始化data[][]中的變數??????????chart?ct?=?new?chart();??????????ChartPanel?chartf?=?new?ChartPanel(ct.freeChart,true);??????????ChartPanel?chartf1?=?new?ChartPanel(ct.freeChart1,true);??????????JFrame?jf?=?new?JFrame();??????????jf.add(chartf,BorderLayout.WEST);??????????jf.add(chartf1,BorderLayout.EAST);??????????jf.setVisible(true);??????????jf.setSize(1400,?600);??????????jf.setLocationRelativeTo(null);?????}}

運行效果如下














Java畫折線圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.