隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          本博客系個(gè)人收集材料及學(xué)習(xí)記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 204293
          • 排名 - 283

          最新評(píng)論

          一、jFreeChart產(chǎn)生圖形的流程
          創(chuàng)建一個(gè)數(shù)據(jù)源(dataset)來(lái)包含將要在圖形中顯示的數(shù)據(jù)?????>>創(chuàng)建一個(gè) JFreeChart 對(duì)象來(lái)代表要顯示的圖形
          ??????>>把圖形輸出
          重要的類和接口:
          org.jfree.data.general.Dataset 所有數(shù)據(jù)源類都要實(shí)現(xiàn)的接口
          org.jfree.chart.ChartFactory 由它來(lái)產(chǎn)生 JFreeChart 對(duì)象
          org.jfree.chart.JFreeChart 所有對(duì)圖形的調(diào)整都是通過(guò)它噢!!
          org.jfree.chart.plot.Plot 通過(guò)JFreeChart 對(duì)象獲得它,然后再通過(guò)它對(duì)圖形外部部分(例:坐標(biāo)軸)調(diào)整
          注意:它有很多子類,一般都下嗍造型到它的子類!
          org.jfree.chart.renderer.AbstractRenderer 通過(guò)JFreeChart 對(duì)象獲得它,然后再通過(guò)它對(duì)圖形內(nèi)部部分
          (例:折線的類型)調(diào)整。同樣,針對(duì)不同類型的報(bào)表圖,它有
          著不同的子類實(shí)現(xiàn)!在下面我們簡(jiǎn)稱它為 Renderer
          下面我們結(jié)合不同類型的圖形來(lái)具體分析這個(gè)流程。

          二、餅圖
          餅圖的dataset 一般是用PieDataset 接口,具體實(shí)現(xiàn)類是 DefaultPieDataset
          1、創(chuàng)建一個(gè)數(shù)據(jù)源(dataset):
          private static PieDataset createDataset()
          {
          DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); //注意是DefaultPieDataset!!
          defaultpiedataset.setValue(”O(jiān)ne”, new Double(43.200000000000003D));
          defaultpiedataset.setValue(”Two”, new Double(10D));
          defaultpiedataset.setValue(”Three”, new Double(27.5D));
          defaultpiedataset.setValue(”Four”, new Double(17.5D));
          return defaultpiedataset;
          }
          2、由ChartFactory 產(chǎn)生 JFreeChart 對(duì)象
          private static JFreeChart createChart(PieDataset piedataset)
          {
          JFreeChart jfreechart = ChartFactory.createPieChart(”Pie Chart Demo 1″, //圖形標(biāo)題名稱
          piedataset, // dataset
          true, // legend?
          true, // tooltips?
          false); //URLs?
          PiePlot pieplot = (PiePlot)jfreechart.getPlot(); //通過(guò)JFreeChart 對(duì)象獲得 plot:PiePlot!!
          pieplot.setNoDataMessage(”No data available”); // 沒(méi)有數(shù)據(jù)的時(shí)候顯示的內(nèi)容
          return jfreechart;
          }
          一些重要的方法:
          pieplot.setExplodePercent(0,0.3D) //把Lable 為”O(jiān)ne” 的那一塊”挖”出來(lái)30%
          3、輸出略

          三、柱狀圖
          柱狀圖的dataset 一般是用CatagoryDataset接口(具體實(shí)現(xiàn)類是DefaultCategoryDataset),也會(huì)用 IntervalXYDataset
          接口
          1、創(chuàng)建一個(gè)數(shù)據(jù)源(dataset):
          private static CategoryDataset createDataset()
          {
          String series1 = “First”;
          String series2 = “Second”;
          String series3 = “Third”;
          String category1 = “Category 1″;
          String category2 = “Category 2″;
          String category3 = “Category 3″;
          String category4 = “Category 4″;
          String category5 = “Category 5″;
          DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
          defaultcategorydataset.addValue(1.0D, series1, category1);
          defaultcategorydataset.addValue(4D, series1, category2);
          defaultcategorydataset.addValue(3D, series1, category3);
          defaultcategorydataset.addValue(5D, series1, category4);
          defaultcategorydataset.addValue(5D, series1, category5);

          defaultcategorydataset.addValue(5D, series2, category1);
          defaultcategorydataset.addValue(7D, series2, category2);
          defaultcategorydataset.addValue(6D, series2, category3);
          defaultcategorydataset.addValue(8D, series2, category4);
          defaultcategorydataset.addValue(4D, series2, category5);

          defaultcategorydataset.addValue(4D, series3, category1);
          defaultcategorydataset.addValue(3D, series3, category2);
          defaultcategorydataset.addValue(2D, series3, category3);
          defaultcategorydataset.addValue(3D, series3, category4);
          defaultcategorydataset.addValue(6D, series3, category5);
          return defaultcategorydataset;
          }
          2、由ChartFactory 產(chǎn)生 JFreeChart 對(duì)象
          private static JFreeChart createChart(CategoryDataset categorydataset)
          {
          JFreeChart jfreechart = ChartFactory.createBarChart(”Bar Chart Demo”, //圖形標(biāo)題名稱
          “Category”,//domain 軸 Lable
          這里先簡(jiǎn)單理解為橫坐標(biāo)Lable好了
          “Value”, //range 軸 Lable
          這里也先簡(jiǎn)單理解為縱坐標(biāo)Lable好了
          categorydataset, // dataset
          PlotOrientation.VERTICAL, //垂直顯示
          true, // legend?
          true, // tooltips?
          false); //URLs?
          jfreechart.setBackgroundPaint(Color.white); //設(shè)定背景色為白色
          CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //獲得 plot:CategoryPlot!!
          categoryplot.setBackgroundPaint(Color.lightGray); //設(shè)定圖表數(shù)據(jù)顯示部分背景色
          categoryplot.setDomainGridlinePaint(Color.white); //橫坐標(biāo)網(wǎng)格線白色
          categoryplot.setDomainGridlinesVisible(true); //可見(jiàn)
          categoryplot.setRangeGridlinePaint(Color.white); //縱坐標(biāo)網(wǎng)格線白色
          //下面兩行使縱坐標(biāo)的最小單位格為整數(shù)
          NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
          numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
          BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); //獲得renderer 注意這里是下嗍造型
          到BarRenderer!!
          barrenderer.setDrawBarOutline(false); // Bar的外輪廓線不畫
          GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,
          0.0F, 0.0F, new Color(0, 0, 64)); //設(shè)定特定顏色
          GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green,
          0.0F, 0.0F, new Color(0, 64, 0));
          GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red,
          0.0F, 0.0F, new Color(64, 0, 0));
          barrenderer.setSeriesPaint(0, gradientpaint); //給series1 Bar設(shè)定上面定義的顏色
          barrenderer.setSeriesPaint(1, gradientpaint1); //給series2 Bar 設(shè)定上面定義的顏色
          barrenderer.setSeriesPaint(2, gradientpaint2); //給series3 Bar 設(shè)定上面定義的顏色
          CategoryAxis categoryaxis = categoryplot.getDomainAxis(); //橫軸上的 Lable 45度傾斜
          categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
          return jfreechart;
          }
          一些重要的方法:(增加一塊標(biāo)記)
          IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D);
          intervalmarker.setLabel(”Target Range”);
          intervalmarker.setLabelFont(new Font(”SansSerif”, 2, 11));
          intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);
          intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
          intervalmarker.setPaint(new Color(222, 222, 255, 128));
          categoryplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);

          四、折線圖
          折線圖的dataset 兩種CatagoryDataset接口(具體實(shí)現(xiàn)類是DefaultCategoryDataset),XYDataset 接口
          1、CatagoryDataset接口:
          A、創(chuàng)建一個(gè)數(shù)據(jù)源(dataset):
          private static CategoryDataset createDataset()
          {
          String series1 = “First”;
          String series2 = “Second”;
          String series3 = “Third”;
          String type1 = “Type 1″;
          String type2 = “Type 2″;
          String type3 = “Type 3″;
          String type4 = “Type 4″;
          String type5 = “Type 5″;
          String type6 = “Type 6″;
          String type7 = “Type 7″;
          String type8 = “Type 8″;
          DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
          defaultcategorydataset.addValue(1.0D, series1, type1);
          defaultcategorydataset.addValue(4D, series1, type2);
          defaultcategorydataset.addValue(3D, series1, type3);
          defaultcategorydataset.addValue(5D, series1, type4);
          defaultcategorydataset.addValue(5D, series1, type5);
          defaultcategorydataset.addValue(7D, series1, type6);
          defaultcategorydataset.addValue(7D, series1, type7);
          defaultcategorydataset.addValue(8D, series1, type8);

          defaultcategorydataset.addValue(5D, series2, type1);
          defaultcategorydataset.addValue(7D, series2, type2);
          defaultcategorydataset.addValue(6D, series2, type3);
          defaultcategorydataset.addValue(8D, series2, type4);
          defaultcategorydataset.addValue(4D, series2, type5);
          defaultcategorydataset.addValue(4D, series2, type6);
          defaultcategorydataset.addValue(2D, series2, type7);
          defaultcategorydataset.addValue(1.0D, series2, type8);

          defaultcategorydataset.addValue(4D, series3, type1);
          defaultcategorydataset.addValue(3D, series3, type2);
          defaultcategorydataset.addValue(2D, series3, type3);
          defaultcategorydataset.addValue(3D, series3, type4);
          defaultcategorydataset.addValue(6D, series3, type5);
          defaultcategorydataset.addValue(3D, series3, type6);
          defaultcategorydataset.addValue(4D, series3, type7);
          defaultcategorydataset.addValue(3D, series3, type8);
          return defaultcategorydataset;
          }
          B、由ChartFactory 產(chǎn)生 JFreeChart 對(duì)象 (與上面重復(fù)的部分就不再注釋)
          private static JFreeChart createChart(CategoryDataset categorydataset)
          {
          JFreeChart jfreechart = ChartFactory.createLineChart(”Line Chart Demo 1″,
          “Type”,
          “Value”,
          categorydataset,
          PlotOrientation.VERTICAL,
          true,
          true,
          false);
          jfreechart.setBackgroundPaint(Color.white);
          CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
          categoryplot.setBackgroundPaint(Color.lightGray);
          categoryplot.setRangeGridlinePaint(Color.white);
          NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
          numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
          numberaxis.setAutoRangeIncludesZero(true);
          //獲得renderer 注意這里是下嗍造型到lineandshaperenderer!!
          LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
          lineandshaperenderer.setShapesVisible(true); //series 點(diǎn)(即數(shù)據(jù)點(diǎn))可見(jiàn)
          lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
          10F, 6F
          }, 0.0F)); //定義series為”First”的(即series1)點(diǎn)之間的連線 ,這里是虛線,默認(rèn)是直線
          lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
          6F, 6F
          }, 0.0F)); //定義series為”Second”的(即series2)點(diǎn)之間的連線
          lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
          2.0F, 6F
          }, 0.0F)); //定義series為”Third”的(即series3)點(diǎn)之間的連線
          return jfreechart;
          }
          一些重要的方法:
          lineandshaperenderer.setLineVisible(true) //series 點(diǎn)(即數(shù)據(jù)點(diǎn))間有連線可見(jiàn)
          2、XYDataset 接口:
          A、創(chuàng)建一個(gè)數(shù)據(jù)源(dataset):
          private static XYDataset createDataset()
          {
          XYSeries xyseries = new XYSeries(”First”); //先產(chǎn)生XYSeries 對(duì)象
          xyseries.add(1.0D, 1.0D);
          xyseries.add(2D, 4D);
          xyseries.add(3D, 3D);
          xyseries.add(4D, 5D);
          xyseries.add(5D, 5D);
          xyseries.add(6D, 7D);
          xyseries.add(7D, 7D);
          xyseries.add(8D, 8D);

          XYSeries xyseries1 = new XYSeries(”Second”);
          xyseries1.add(1.0D, 5D);
          xyseries1.add(2D, 7D);
          xyseries1.add(3D, 6D);
          xyseries1.add(4D, 8D);
          xyseries1.add(5D, 4D);
          xyseries1.add(6D, 4D);
          xyseries1.add(7D, 2D);
          xyseries1.add(8D, 1.0D);

          XYSeries xyseries2 = new XYSeries(”Third”);
          xyseries2.add(3D, 4D);
          xyseries2.add(4D, 3D);
          xyseries2.add(5D, 2D);
          xyseries2.add(6D, 3D);
          xyseries2.add(7D, 6D);
          xyseries2.add(8D, 3D);
          xyseries2.add(9D, 4D);
          xyseries2.add(10D, 3D);

          XYSeriesCollection xyseriescollection = new XYSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 對(duì)象
          xyseriescollection.addSeries(xyseries);
          xyseriescollection.addSeries(xyseries1);
          xyseriescollection.addSeries(xyseries2);
          return xyseriescollection;
          }
          B、由ChartFactory 產(chǎn)生 JFreeChart 對(duì)象
          private static JFreeChart createChart(XYDataset xydataset)
          {
          JFreeChart jfreechart = ChartFactory.createXYLineChart(”Line Chart Demo 2″,
          “X”,
          “Y”,
          xydataset,
          PlotOrientation.VERTICAL,
          true,
          true,
          false);
          jfreechart.setBackgroundPaint(Color.white);
          XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //獲得 plot:XYPlot!!
          xyplot.setBackgroundPaint(Color.lightGray); //設(shè)定圖表數(shù)據(jù)顯示部分背景色
          xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); //設(shè)定坐標(biāo)軸與圖表數(shù)據(jù)顯示部分距離
          xyplot.setDomainGridlinePaint(Color.white); //網(wǎng)格線顏色
          xyplot.setRangeGridlinePaint(Color.white);
          //獲得 renderer 注意這里是XYLineAndShapeRenderer !!
          XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();
          xylineandshaperenderer.setShapesVisible(true); //數(shù)據(jù)點(diǎn)可見(jiàn)
          xylineandshaperenderer.setShapesFilled(true); //數(shù)據(jù)點(diǎn)被填充即不是空心點(diǎn)
          NumberAxis numberaxis = (NumberAxis)xyplot.getRangeAxis();
          numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
          return jfreechart;
          }
          一些重要的方法:
          XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();
          xylineandshaperenderer.setSeriesLinesVisible(0, false); //第一個(gè)XYSeries數(shù)據(jù)點(diǎn)間連線不可見(jiàn)
          xylineandshaperenderer.setSeriesShapesVisible(1, false); //第二個(gè)XYSeries數(shù)據(jù)點(diǎn)不可見(jiàn)
          xyplot.setRenderer(xylineandshaperenderer);

          五、時(shí)間序列圖
          時(shí)間序列圖和折線圖很相似,不同的是它在 domain軸的數(shù)據(jù)是時(shí)間而不是數(shù)字。 時(shí)間序列圖的dataset 是
          XYDataset 接口,具體實(shí)現(xiàn)類是TimeSeriesCollection ,和上面類似,有TimeSeries 對(duì)象,它被添加入
          TimeSeriesCollection 。
          1、創(chuàng)建一個(gè)數(shù)據(jù)源(dataset):
          private static XYDataset createDataset()
          {
          TimeSeries timeseries = new TimeSeries(”L&G European Index Trust”,Month.class);
          timeseries.add(new Month(2, 2001), 181.8D);//這里用的是Month.class,同樣還有Day.class Year.class 等等
          timeseries.add(new Month(3, 2001), 167.3D);
          timeseries.add(new Month(4, 2001), 153.8D);
          timeseries.add(new Month(5, 2001), 167.6D);
          timeseries.add(new Month(6, 2001), 158.8D);
          timeseries.add(new Month(7, 2001), 148.3D);
          timeseries.add(new Month(8, 2001), 153.9D);
          timeseries.add(new Month(9, 2001), 142.7D);
          timeseries.add(new Month(10, 2001), 123.2D);
          timeseries.add(new Month(11, 2001), 131.8D);
          timeseries.add(new Month(12, 2001), 139.6D);
          timeseries.add(new Month(1, 2002), 142.9D);
          timeseries.add(new Month(2, 2002), 138.7D);
          timeseries.add(new Month(3, 2002), 137.3D);
          timeseries.add(new Month(4, 2002), 143.9D);
          timeseries.add(new Month(5, 2002), 139.8D);
          timeseries.add(new Month(6, 2002), 137D);
          timeseries.add(new Month(7, 2002), 132.8D);

          TimeSeries timeseries1 = new TimeSeries(”L&G UK Index Trust”,Month.class);
          timeseries1.add(new Month(2, 2001), 129.6D);
          timeseries1.add(new Month(3, 2001), 123.2D);
          timeseries1.add(new Month(4, 2001), 117.2D);
          timeseries1.add(new Month(5, 2001), 124.1D);
          timeseries1.add(new Month(6, 2001), 122.6D);
          timeseries1.add(new Month(7, 2001), 119.2D);
          timeseries1.add(new Month(8, 2001), 116.5D);
          timeseries1.add(new Month(9, 2001), 112.7D);
          timeseries1.add(new Month(10, 2001), 101.5D);
          timeseries1.add(new Month(11, 2001), 106.1D);
          timeseries1.add(new Month(12, 2001), 110.3D);
          timeseries1.add(new Month(1, 2002), 111.7D);
          timeseries1.add(new Month(2, 2002), 111D);
          timeseries1.add(new Month(3, 2002), 109.6D);
          timeseries1.add(new Month(4, 2002), 113.2D);
          timeseries1.add(new Month(5, 2002), 111.6D);
          timeseries1.add(new Month(6, 2002), 108.8D);
          timeseries1.add(new Month(7, 2002), 101.6D);
          TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
          timeseriescollection.addSeries(timeseries);
          timeseriescollection.addSeries(timeseries1);
          timeseriescollection.setDomainIsPointsInTime(true); //domain軸上的刻度點(diǎn)代表的是時(shí)間點(diǎn)而不是時(shí)間段
          return timeseriescollection;
          }
          2、由ChartFactory 產(chǎn)生 JFreeChart 對(duì)象
          private static JFreeChart createChart(XYDataset xydataset)
          {
          JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(”Legal & General Unit Trust Prices”,
          “Date”,
          “Price Per Unit”,
          xydataset,
          true,
          true,
          false);
          jfreechart.setBackgroundPaint(Color.white);
          XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //獲得 plot : XYPlot!!
          xyplot.setBackgroundPaint(Color.lightGray);
          xyplot.setDomainGridlinePaint(Color.white);
          xyplot.setRangeGridlinePaint(Color.white);
          xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
          xyplot.setDomainCrosshairVisible(true);
          xyplot.setRangeCrosshairVisible(true);
          org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.getRenderer();
          if(xyitemrenderer instanceof XYLineAndShapeRenderer)
          {
          XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;
          xylineandshaperenderer.setDefaultShapesVisible(true); //數(shù)據(jù)點(diǎn)可見(jiàn)
          xylineandshaperenderer.setDefaultShapesFilled(true); //數(shù)據(jù)點(diǎn)是實(shí)心點(diǎn)
          }
          DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis(); //對(duì)domain 軸上日期顯示格式定義
          dateaxis.setDateFormatOverride(new SimpleDateFormat(”MMM-yyyy”));
          return jfreechart;
          }
          一些重要的方法:
          A、增加標(biāo)記線:
          xyplot.addRangeMarker(new ValueMarker(550D)); //數(shù)值軸
          Quarter quarter = new Quarter(2, 2002);
          xyplot.addDomainMarker(new ValueMarker(quarter.getMiddleMillisecond())); //時(shí)間軸
          B、數(shù)據(jù)點(diǎn)的調(diào)整
          XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();
          xylineandshaperenderer.setDefaultShapesVisible(true); //數(shù)據(jù)點(diǎn)可見(jiàn)
          xylineandshaperenderer.setSeriesFillPaint(0, Color.red); //數(shù)據(jù)點(diǎn)填充為紅色
          xylineandshaperenderer.setSeriesFillPaint(1, Color.white); //數(shù)據(jù)點(diǎn)填充為白色
          xylineandshaperenderer.setUseFillPaint(true); //應(yīng)用
          C、平均值曲線
          這個(gè)曲線有什么用呢?很簡(jiǎn)單的例子,這里有一個(gè)以半年每天為單位的數(shù)據(jù)繪制的曲線,我們想看看以月為單位數(shù)據(jù)
          的變化,這時(shí)就可以用到它了。
          TimeSeries timeseries = createEURTimeSeries(); //就是以半年每天為單位的數(shù)據(jù)
          TimeSeries timeseries1 = MovingAverage.createMovingAverage(timeseries,
          “30 day moving average”,
          30, //30天為一個(gè)周期
          30); //最開(kāi)始的30天跳過(guò)
          TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
          timeseriescollection.addSeries(timeseries);
          timeseriescollection.addSeries(timeseries1);
          return timeseriescollection;

          六、總結(jié)一下
          dataset plot renderer
          餅圖 PieDataset(DefaultPieDataset) PiePlot ——
          柱狀圖 CatagoryDataset(DefaultCategoryDataset) CategoryPlot BarRenderer
          折線圖 CatagoryDataset(DefaultCategoryDataset) CategoryPlot LineAndShapeRenderer
          XYDataset(XYSeriesCollection) XYPlot XYLineAndShapeRenderer
          時(shí)間序列圖 XYDataset (TimeSeriesCollection) XYPlot XYLineAndShapeRenderer
          這里只是一些常用的方法,具體還是看API
          七、Item Lable
          這里以柱狀圖為例說(shuō)明,具體來(lái)說(shuō)就是在每個(gè)柱狀上顯示它的數(shù)據(jù),具體有下面內(nèi)容:
          A、使 Item Lable 可見(jiàn)
          B、調(diào)整 Item Lable 的顏色、字體等
          C、調(diào)整 Item Lable 的位置
          D、定制 Item Lable 的內(nèi)容
          1、分配一個(gè) Lable Generator 給 renderer
          BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();
          GategoryLableGenerator generator =new StandardGategoryLableGenerator(
          “{2}”, new DecimalFormat(”0.00″) //調(diào)整顯示的數(shù)字和字符格式
          );
          barrenderer.setLableGenerator(generator);
          2、使 Item Lable 可見(jiàn)
          barrenderer.setItemLableVisible(true);
          3、調(diào)整 Item Lable 的顏色、字體等
          barrenderer.setItemLablePaint(Color.red);
          barrenderer.setItemLableFont(new Font(”SansSerif”,Font.PLAIN,10));
          4、調(diào)整 Item Lable 的位置
          這里涉及到一個(gè)新的對(duì)象 ItemLablePosition , ItemLablePosition的構(gòu)造函數(shù)有兩個(gè)或四個(gè)參數(shù)
          public ItemLabelPosition(ItemLabelAnchor itemLabelAnchor,
          org.jfree.ui.TextAnchor textAnchor,
          org.jfree.ui.TextAnchor rotationAnchor,
          double angle)
          itemLabelAnchor - Item Lable 的位置 (最重要的!!)
          textAnchor - Item Lable里包含的正文相對(duì)于Item Lable 的位置
          rotationAnchor - Item Lable里包含的正文旋轉(zhuǎn)的位置
          angle - 旋轉(zhuǎn)的角度
          ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE12,
          TextAnchor.CENTER_RIGHT,
          TextAnchor.CENTER_RIGHT,
          -1.57D);
          barrenderer.setPositiveItemLabelPosition(itemlabelposition);
          這樣就可以每個(gè)柱狀上顯示它的數(shù)據(jù)了,當(dāng)然可以定制 Item Lable 的內(nèi)容,比如 Item Lable text 超過(guò)100的才
          顯示,這樣就需要定制自己的類,它要實(shí)現(xiàn)GategoryLableGenerator 接口,實(shí)現(xiàn)generateItemLable()方法
          posted on 2006-08-14 14:35 matthew 閱讀(481) 評(píng)論(0)  編輯  收藏 所屬分類: 報(bào)表設(shè)計(jì)與開(kāi)發(fā)
          主站蜘蛛池模板: 无棣县| 罗城| 平塘县| 嘉善县| 墨江| 扬中市| 襄城县| 阳春市| 额尔古纳市| 松原市| 南漳县| 赤城县| 当雄县| 沐川县| 建水县| 平安县| 邳州市| 怀远县| 苏州市| 定西市| 碌曲县| 汉阴县| 忻城县| 玉环县| 安福县| 陈巴尔虎旗| 石棉县| 婺源县| 尚志市| 彭阳县| 孝感市| 巩留县| 通化县| 五莲县| 平安县| 涡阳县| 民权县| 镇雄县| 逊克县| 集安市| 鸡西市|