日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JFreeChart中柱狀圖的詳細(xì)設(shè)置

 WindySky 2009-01-14
26

JFreeChart中柱狀圖的詳細(xì)設(shè)置

柱狀圖: bar charts (regular and stacked, with an optional 3D effect),用到的主要類如下:

 org.jfree.chart.JFreeChart:圖表對(duì)象,任何類型的圖表的最終表現(xiàn)形式都是在該對(duì)象進(jìn)行一些屬性的定制。JFreeChart引擎本身提供了一個(gè)工廠類用于創(chuàng)建不同類型的圖表對(duì)象

 org.jfree.data.category.CategoryDataset:數(shù)據(jù)集對(duì)象,用于提供顯示圖表所用的數(shù)據(jù)。根據(jù)不同類型的圖表對(duì)應(yīng)著很多類型的數(shù)據(jù)集對(duì)象類

 org.jfree.chart.plot.CategoryPlot:圖表區(qū)域?qū)ο?,基本上這個(gè)對(duì)象決定著什么樣式的圖表,創(chuàng)建該對(duì)象的時(shí)候需要Axis、Renderer以及數(shù)據(jù)集對(duì)象的支持

 org.jfree.chart.axis.CategoryAxis:用于處理圖表的兩個(gè)軸:縱軸和橫軸

 org.jfree.chart.render.CategoryRender:負(fù)責(zé)如何顯示一個(gè)圖表對(duì)象

 org.jfree.chart.urls.CategoryURLGenerator:用于生成Web圖表中每個(gè)項(xiàng)目的鼠標(biāo)點(diǎn)擊鏈接

 CategoryToolTipGenerator:用于生成圖象的幫助提示,不同類型圖表對(duì)應(yīng)不同類型的工具提示類

 org.jfree.chart.axis.ValueAxis:用于處理圖表中的柱

 

Java代碼 復(fù)制代碼
  1. /**  
  2.  
  3. * 類庫(kù)  
  4.  
  5. * 1、jfreechart-1.0.5.jar、jcommon-1.0.9.jar、gnujaxp.jar  
  6. * 2、jbcl.jar、dx.jar、beandt.jar 由JBuilder2006的lib下提供  
  7.  
  8. */  
  9.   
  10. package org.jfree.demo;   
  11.   
  12. import java.io.*;   
  13.   
  14. import org.jfree.data.*;   
  15.   
  16. import org.jfree.chart.*;   
  17.   
  18. import org.jfree.chart.plot.*;   
  19.   
  20. import org.jfree.data.category.*;   
  21.   
  22. import java.awt.Color;   
  23.   
  24. import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;   
  25.   
  26. import java.awt.Font;   
  27.   
  28. import org.jfree.chart.axis.AxisLocation;   
  29.   
  30. import java.awt.event.WindowAdapter;   
  31.   
  32. import java.awt.event.WindowEvent;   
  33.   
  34. import java.awt.Toolkit;   
  35.   
  36. import java.awt.Dimension;   
  37.   
  38. /**  
  39.  
  40. * <p>Title: Java開發(fā)手冊(cè)</p>  
  41.  
  42. *  
  43.  
  44. * <p>Description: 適合中高級(jí)使用者</p>  
  45.  
  46. *  
  47.  
  48. * <p>Copyright: Copyright (c) 2007</p>  
  49.  
  50. *  
  51.  
  52. * <p>Company: lingbrother</p>  
  53.  
  54. *  
  55.  
  56. * @author lingbrother  
  57.  
  58. * @version 1.0  
  59.  
  60. */  
  61.   
  62. public class BarChartDemo {   
  63.   
  64.   public BarChartDemo() {   
  65.   
  66.     super();   
  67.   
  68.   }   
  69.   
  70.   
  71.   
  72.   public static void main(String[] args) throws IOException{   
  73.   
  74.           CategoryDataset dataset = getDataSet();   
  75.   
  76.           JFreeChart chart = ChartFactory.createBarChart3D(   
  77.   
  78.                                                   "招生信息總覽"// 圖表標(biāo)題   
  79.   
  80.                                                   "應(yīng)報(bào)與實(shí)報(bào)對(duì)照"// 目錄軸的顯示標(biāo)簽   
  81.   
  82.                                                   "人數(shù)"// 數(shù)值軸的顯示標(biāo)簽   
  83.   
  84.                                                   dataset, // 數(shù)據(jù)集   
  85.   
  86.                                                   PlotOrientation.VERTICAL, // 圖表方向:水平、垂直   
  87.   
  88.                                                   true,  // 是否顯示圖例(對(duì)于簡(jiǎn)單的柱狀圖必須是false)   
  89.   
  90.                                                   true,  // 是否生成工具   
  91.   
  92.                                                   true  // 是否生成URL鏈接   
  93.   
  94.                                                   );   
  95.   
  96.           CategoryPlot plot = chart.getCategoryPlot();//獲得圖表區(qū)域?qū)ο?  
  97.   
  98.           //設(shè)置圖表的縱軸和橫軸org.jfree.chart.axis.CategoryAxis   
  99.   
  100.           org.jfree.chart.axis.CategoryAxis domainAxis = plot.getDomainAxis();   
  101.   
  102.           domainAxis.setLowerMargin(0.1);//設(shè)置距離圖片左端距離此時(shí)為10%   
  103.   
  104.           domainAxis.setUpperMargin(0.1);//設(shè)置距離圖片右端距離此時(shí)為百分之10   
  105.   
  106.           domainAxis.setCategoryLabelPositionOffset(10);//圖表橫軸與標(biāo)簽的距離(10像素)   
  107.   
  108.           domainAxis.setCategoryMargin(0.2);//橫軸標(biāo)簽之間的距離20%   
  109.   
  110.           //domainAxis.setMaximumCategoryLabelLines(1);   
  111.   
  112.           //domainAxis.setMaximumCategoryLabelWidthRatio(0);   
  113.   
  114.   
  115.   
  116.           //設(shè)定柱子的屬性   
  117.   
  118.           org.jfree.chart.axis.ValueAxis rangeAxis = plot.getRangeAxis();   
  119.   
  120.           rangeAxis.setUpperMargin(0.1);//設(shè)置最高的一個(gè)柱與圖片頂端的距離(最高柱的10%)   
  121.   
  122.   
  123.   
  124.           //設(shè)置圖表的顏色   
  125.   
  126.           org.jfree.chart.renderer.category.BarRenderer3D renderer;   
  127.   
  128.           renderer = new org.jfree.chart.renderer.category.BarRenderer3D();   
  129.   
  130.           renderer.setBaseOutlinePaint(Color.red);   
  131.   
  132.           renderer.setSeriesPaint(0new Color(0255255));//計(jì)劃柱子的顏色為青色   
  133.   
  134.           renderer.setSeriesOutlinePaint(0,Color.BLACK);//邊框?yàn)楹谏?  
  135.   
  136.           renderer.setSeriesPaint(1new Color(02550));//實(shí)報(bào)柱子的顏色為綠色   
  137.   
  138.           renderer.setSeriesOutlinePaint(1,Color.red);//邊框?yàn)榧t色   
  139.   
  140.           renderer.setItemMargin(0.1);//組內(nèi)柱子間隔為組寬的10%   
  141.   
  142.           //顯示每個(gè)柱的數(shù)值,并修改該數(shù)值的字體屬性   
  143.   
  144.           renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());   
  145.   
  146.           renderer.setItemLabelFont(new Font("黑體",Font.BOLD,12));//12號(hào)黑體加粗   
  147.   
  148.           renderer.setItemLabelPaint(Color.black);//字體為黑色   
  149.   
  150.           renderer.setItemLabelsVisible(true);   
  151.   
  152.           plot.setRenderer(renderer);//使用我們?cè)O(shè)計(jì)的效果   
  153.   
  154.   
  155.   
  156.           //設(shè)置縱橫坐標(biāo)的顯示位置   
  157.   
  158.           plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);//學(xué)校顯示在下端(柱子豎直)或左側(cè)(柱子水平)   
  159.   
  160.           plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); //人數(shù)顯示在下端(柱子水平)或左側(cè)(柱子豎直)   
  161.   
  162.   
  163.   
  164.           try {   
  165.   
  166.             File file = new File("c:/student.png");   
  167.   
  168.             ChartUtilities.saveChartAsPNG(file,chart,400,300);//把報(bào)表保存為文件   
  169.   
  170.           }catch (Exception e) {   
  171.   
  172.                     String s = e.getLocalizedMessage();   
  173.   
  174.                     s = e.getMessage();   
  175.   
  176.                     s = e.toString();   
  177.   
  178.           }   
  179.   
  180.       //將生成的報(bào)表放到預(yù)覽窗口中   
  181.   
  182.       final ChartFrame preview = new ChartFrame("招生信息",chart);   
  183.   
  184.        preview.addWindowListener(new WindowAdapter() {   
  185.   
  186.          public void windowClosing(final WindowEvent event) {   
  187.   
  188.            preview.dispose();   
  189.   
  190.          }   
  191.   
  192.        });   
  193.   
  194.        preview.pack();   
  195.   
  196.        //調(diào)整預(yù)覽窗口的大小和位置,適合屏幕,并且居中   
  197.   
  198.        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();   
  199.   
  200.        preview.setSize(screenSize.width,screenSize.height-50);//適合屏幕,50表示把工具欄要考慮在內(nèi)   
  201.   
  202.        Dimension frameSize = preview.getSize();   
  203.   
  204.        if (frameSize.height > screenSize.height) {   
  205.   
  206.          frameSize.height = screenSize.height;   
  207.   
  208.        }   
  209.   
  210.        if (frameSize.width > screenSize.width) {   
  211.   
  212.          frameSize.width = screenSize.width;   
  213.   
  214.        }   
  215.   
  216.        preview.setLocation( (screenSize.width - frameSize.width) / 2,   
  217.   
  218.                   (screenSize.height - frameSize.height-50) / 2);   
  219.   
  220.   
  221.   
  222.        //顯示報(bào)表預(yù)覽窗口   
  223.   
  224.        preview.setVisible(true);   
  225.   
  226.   }   
  227.   
  228.   /**  
  229.  
  230.    * 獲取一個(gè)演示用的組合數(shù)據(jù)集對(duì)象  
  231.  
  232.    * @return  
  233.  
  234.    */  
  235.   
  236.   private static CategoryDataset getDataSet() {   
  237.   
  238.           DefaultCategoryDataset dataset = new DefaultCategoryDataset();   
  239.   
  240.           dataset.addValue(200"計(jì)劃""清華大學(xué)");   
  241.   
  242.           dataset.addValue(400"實(shí)報(bào)""清華大學(xué)");   
  243.   
  244.           dataset.addValue(100"計(jì)劃""天津大學(xué)");   
  245.   
  246.           dataset.addValue(205"實(shí)報(bào)""天津大學(xué)");   
  247.   
  248.           dataset.addValue(200"計(jì)劃""鄭州大學(xué)");   
  249.   
  250.           dataset.addValue(285"實(shí)報(bào)""鄭州大學(xué)");   
  251.   
  252.           return dataset;   
  253.   
  254.   }   
  255.   
  256. }   

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多