最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jfreechart畫(huà)折線圖的方法

 更新時(shí)間:2018年06月19日 11:26:37   作者:yuhentian  
這篇文章主要為大家詳細(xì)介紹了jfreechart畫(huà)折線圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

JFreeChart 是開(kāi)放源代碼站點(diǎn)SourceForge.net 上的一個(gè) JAVA 項(xiàng)目,它主要用來(lái)各種各樣的圖表,這些圖表包括:餅圖、柱狀圖 ( 普通柱狀圖以及堆棧柱狀圖 )、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤(pán)等等。

應(yīng)用jfreechart來(lái)畫(huà)圖需要兩個(gè)jar包:jfreechart.jar和jcommon.jar,下載地址。

下面是一個(gè)畫(huà)折線圖的例子:

package yuth.jfree.demo; 
/** 
 * 使用 categoryDataset 數(shù)據(jù)集創(chuàng)建折線圖 
 * 當(dāng)數(shù)據(jù)多時(shí),在JPanel中無(wú)法完全看到橫坐標(biāo)的值,顯示為省略號(hào)。 
 * 解決方法: 
 * 方法1、將報(bào)表保存為圖片時(shí),設(shè)置圖片的寬度足夠大(2000或3000),圖片可以顯示橫坐標(biāo)值。 
 *  這種方法治標(biāo)不治本,所以有了第2種方法 
 * 方法2、設(shè)置X軸上的Lable讓其45度傾斜。 
 */ 
import java.awt.BasicStroke; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 
import java.awt.geom.Ellipse2D; 
import java.io.File; 
import java.io.IOException; 
import java.net.URL; 
import java.text.DecimalFormat; 
import java.util.Random; 
 
import javax.swing.ImageIcon; 
import javax.swing.JPanel; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.CategoryAxis; 
import org.jfree.chart.axis.CategoryLabelPositions; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.renderer.category.LineAndShapeRenderer; 
import org.jfree.chart.title.TextTitle; 
import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.HorizontalAlignment; 
import org.jfree.ui.RectangleEdge; 
import org.jfree.ui.RectangleInsets; 
import org.jfree.ui.RefineryUtilities; 
 
public class LineChartDemo1 extends ApplicationFrame { 
 
 private static final long serialVersionUID = -6354350604313079793L; 
 /* synthetic */static Class class$demo$LineChartDemo1; 
 
 public LineChartDemo1(String string) { 
  super(string); 
 JPanel jpanel = createDemoPanel(); 
 jpanel.setPreferredSize(new Dimension(500, 270)); 
  setContentPane(jpanel); 
 } 
 
 
 
 /** 
 * 如何區(qū)分不同的圖例:根據(jù)DefaultCategoryDataset.addValue()的第二個(gè)參數(shù)是否相同來(lái)區(qū)分。 
 * 同一個(gè)圖例的數(shù)據(jù)的添加順序影響最終的顯示;不同圖例的數(shù)據(jù)的添加順序不影響最終的顯示。 
 * @return 
 */ 
 private static CategoryDataset createDataset() { 
 DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); 
 //defaultcategorydataset.addValue()的參數(shù)解析:(數(shù)值,圖例名,橫坐標(biāo)值) 
/* 
 //添加數(shù)據(jù)方法1 
 //圖例1 
 defaultcategorydataset.addValue(212.0, "First", "1001.0"); 
  defaultcategorydataset.addValue(504.0, "First", "1001.1"); 
 defaultcategorydataset.addValue(1520.0, "First", "1001.2"); 
 
 //圖例2 
 defaultcategorydataset.addValue(712.0, "Second", "1001.0"); 
  defaultcategorydataset.addValue(1204.0, "Second", "1001.1"); 
 defaultcategorydataset.addValue(1820.0, "Second", "1001.2");  
/*/ 
//* 
 //添加數(shù)據(jù)方法2 
 //實(shí)驗(yàn)隨機(jī)數(shù)來(lái)生成測(cè)試結(jié)果 
 Random random = new Random(12345); 
 
 //圖例1,40個(gè)數(shù)據(jù) 
 for(int i=0;i<40;i++){ 
  defaultcategorydataset.addValue(random.nextInt(100000), 
   "First",String.valueOf(1000+i) ); 
 } 
 //圖例2,40個(gè)數(shù)據(jù) 
 for (int i = 0; i < 40; i++) { 
  defaultcategorydataset.addValue(random.nextInt(100000), 
   "Second", String.valueOf(1000 + i)); 
 } 
//*/  
  
 return defaultcategorydataset; 
 } 
 
 private static JFreeChart createChart(CategoryDataset categorydataset) { 
 JFreeChart jfreechart = ChartFactory.createLineChart( 
  "jfreechart test",// 圖表標(biāo)題 
  "X", // 主軸標(biāo)簽(x軸) 
  "Y",// 范圍軸標(biāo)簽(y軸) 
  categorydataset, // 數(shù)據(jù)集 
  PlotOrientation.VERTICAL,// 方向 
  false, // 是否包含圖例 
  true, // 提示信息是否顯示 
  false);// 是否使用urls 
  
 // 改變圖表的背景顏色 
 jfreechart.setBackgroundPaint(Color.white); 
  
 CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); 
 categoryplot.setBackgroundPaint(Color.lightGray); 
 categoryplot.setRangeGridlinePaint(Color.white); 
 categoryplot.setRangeGridlinesVisible(false); 
 
 //修改范圍軸。 我們將默認(rèn)刻度值 (允許顯示小數(shù)) 改成只顯示整數(shù)的刻度值。 
 NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); 
 numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
  
 // 設(shè)置X軸上的Lable讓其45度傾斜 
 CategoryAxis domainAxis = categoryplot.getDomainAxis(); 
 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 設(shè)置X軸上的Lable讓其45度傾斜 
  domainAxis.setLowerMargin(0.0); // 設(shè)置距離圖片左端距離 
  domainAxis.setUpperMargin(0.0); // 設(shè)置距離圖片右端距離 
  
  
  
 LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot 
  .getRenderer(); 
 lineandshaperenderer.setShapesVisible(true); 
 lineandshaperenderer.setDrawOutlines(true); 
 lineandshaperenderer.setUseFillPaint(true); 
 lineandshaperenderer.setBaseFillPaint(Color.white); 
 lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3.0F)); 
 lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F)); 
 lineandshaperenderer.setSeriesShape(0, new Ellipse2D.Double(-5.0, -5.0, 
  10.0, 10.0)); 
 lineandshaperenderer.setItemMargin(0.4); //設(shè)置x軸每個(gè)值的間距(不起作用??) 
  
 // 顯示數(shù)據(jù)值 
 DecimalFormat decimalformat1 = new DecimalFormat("##.##");// 數(shù)據(jù)點(diǎn)顯示數(shù)據(jù)值的格式 
 lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator( 
  "{2}", decimalformat1));// 設(shè)置數(shù)據(jù)項(xiàng)標(biāo)簽的生成器 
 lineandshaperenderer.setBaseItemLabelsVisible(true);// 基本項(xiàng)標(biāo)簽顯示 
 lineandshaperenderer.setBaseShapesFilled(true);// 在數(shù)據(jù)點(diǎn)顯示實(shí)心的小圖標(biāo) 
   
  
 return jfreechart; 
 } 
 
 public static JPanel createDemoPanel() { 
 JFreeChart jfreechart = createChart(createDataset()); 
 
 try { 
  ChartUtilities.saveChartAsJPEG( 
   new File("D:/LineChartDemo1.png"), //文件保存物理路徑包括路徑和文件名 
   // 1.0f, //圖片質(zhì)量 ,0.0f~1.0f 
   jfreechart, //圖表對(duì)象 
   1024, //圖像寬度 ,這個(gè)將決定圖表的橫坐標(biāo)值是否能完全顯示還是顯示省略號(hào) 
   768); 
 } catch (IOException e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
 } //圖像高度 
   
 return new ChartPanel(jfreechart); 
 } 
 
 public static void main(String[] strings) { 
 LineChartDemo1 linechartdemo1 = new LineChartDemo1( 
  "JFreeChart - Line Chart Demo 1"); 
 linechartdemo1.pack(); 
 RefineryUtilities.centerFrameOnScreen(linechartdemo1); 
 linechartdemo1.setVisible(true); 
 } 
 
 /* synthetic */ 
 static Class class$(String string) { 
 Class var_class; 
 try { 
  var_class = Class.forName(string); 
 } catch (ClassNotFoundException classnotfoundexception) { 
  throw new NoClassDefFoundError(classnotfoundexception.getMessage()); 
 } 
 return var_class; 
 } 
} 

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解NIO中FileChannel文件流的簡(jiǎn)單使用

    詳解NIO中FileChannel文件流的簡(jiǎn)單使用

    NIO中Channel分為了很多種,包括FileChannel,DatagramChannel,SocketChannel和ServerSocketChannel,其中FileChannel主要用于對(duì)文件的讀寫(xiě),本文主要和大家探討了FileChannel文件流的簡(jiǎn)單使用,希望對(duì)大家有所幫助
    2023-05-05
  • Java SpringBoot 集成 Redis詳解

    Java SpringBoot 集成 Redis詳解

    Redis 是一個(gè)由 Salvatore Sanfilippo 寫(xiě)的 key-value 存儲(chǔ)系統(tǒng),是跨平臺(tái)的非關(guān)系型數(shù)據(jù)庫(kù)。Redis 是一個(gè)開(kāi)源的使用 ANSI C 語(yǔ)言編寫(xiě)、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(duì)(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的 API
    2021-10-10
  • JVM常用垃圾收集器及GC算法解讀

    JVM常用垃圾收集器及GC算法解讀

    這篇文章主要介紹了JVM常用垃圾收集器及GC算法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Spring Cloud之遠(yuǎn)程調(diào)用OpenFeign參數(shù)傳遞

    Spring Cloud之遠(yuǎn)程調(diào)用OpenFeign參數(shù)傳遞

    本文介紹了Spring Cloud中使用OpenFeign進(jìn)行遠(yuǎn)程調(diào)用時(shí),參數(shù)傳遞的不同方式,包括傳遞單個(gè)參數(shù)、多個(gè)參數(shù)、對(duì)象和JSON數(shù)據(jù),感興的朋友一起看看吧
    2025-03-03
  • Java反射之Call stack introspection詳解

    Java反射之Call stack introspection詳解

    這篇文章主要介紹了Java反射之Call stack introspection詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java枚舉(enum) 詳解7種常見(jiàn)的用法

    Java枚舉(enum) 詳解7種常見(jiàn)的用法

    這篇文章主要介紹了Java枚舉(enum) 詳解7種常見(jiàn)的用法,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11
  • Mybatis Plus使用@TableId的示例詳解

    Mybatis Plus使用@TableId的示例詳解

    在 MyBatis Plus 中,@TableId 注解是用于標(biāo)記實(shí)體類中的主鍵字段,它可以更方便地處理主鍵相關(guān)的操作,如自動(dòng)填充主鍵值或識(shí)別主鍵字段,這篇文章主要介紹了Mybatis Plus使用@TableId,需要的朋友可以參考下
    2024-08-08
  • 淺談對(duì)Java雙冒號(hào)::的理解

    淺談對(duì)Java雙冒號(hào)::的理解

    這篇文章主要介紹了淺談對(duì)Java雙冒號(hào)::的理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • java響應(yīng)式編程之Reactor使用示例解析

    java響應(yīng)式編程之Reactor使用示例解析

    這篇文章主要為大家介紹了java響應(yīng)式編程之Reactor使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • @MapperScan掃描包里混有@Service等問(wèn)題如何解決

    @MapperScan掃描包里混有@Service等問(wèn)題如何解決

    這篇文章主要介紹了@MapperScan掃描包里混有@Service等問(wèn)題如何解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

元朗区| 广州市| 吕梁市| 满城县| 河南省| 龙山县| 泽普县| 定西市| 布尔津县| 渑池县| 泽州县| 咸丰县| 临沧市| 浙江省| 玉田县| 宝兴县| 柳江县| 宿松县| 乡城县| 广南县| 呼伦贝尔市| 资溪县| 喀什市| 内黄县| 金溪县| 茂名市| 高密市| 荆门市| 桃园县| 昆明市| 滦南县| 江山市| 当雄县| 青神县| 广安市| 钟祥市| 根河市| 安宁市| 东至县| 曲靖市| 商丘市|