<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 5.10 實例講解 ### 5.10.1 體會 也分為三層界面顯示層、數據層、控制層。 + 數據層比較復雜。每個圖形有不同的數據類型。Dataset類控制。 + 控制層Plot,餅圖使用PiePlot設置顯示的圖形的面貌的控制,JFreeChart最豐富的功能。 + 設置片區顏色 + 設置標簽(文本格式、背景顏色等) + 設置是否取出某塊。 + 設置餅圖是否為圓形 + 設置餅圖旋轉。 + 顯示層JFreeChart使用數據、控制直接將數據顯示出來。 ### 5.10.2 類PieChartDemo1.java 效果圖如下: ![](img/jfc12629.png) 代碼編寫典型的使用了面對對象的方法: ![](img/jfc12650.png) 全部代碼如下: ``` package demo; import java.awt.Dimension; import java.awt.Font; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.title.TextTitle; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class PieChartDemo1 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 2598557557724085474L; public PieChartDemo1(String string) { super(string); JPanel jpanel = createDemoPanel(); jpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(jpanel); } private static PieDataset createDataset() { DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); defaultpiedataset.setValue("One", new Double(43.2)); defaultpiedataset.setValue("Two", new Double(10.0)); defaultpiedataset.setValue("Three", new Double(27.5)); defaultpiedataset.setValue("Four", new Double(17.5)); defaultpiedataset.setValue("Five", new Double(11.0)); defaultpiedataset.setValue("Six", new Double(19.4)); return defaultpiedataset; } private static JFreeChart createChart(PieDataset piedataset) { JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 1", piedataset, true, true, false); TextTitle texttitle = jfreechart.getTitle(); texttitle.setToolTipText("A title tooltip!"); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setLabelFont(new Font("Arial Black", 0, 20)); pieplot.setNoDataMessage("No data available"); pieplot.setCircular(false); pieplot.setLabelGap(0.02); return jfreechart; } public static JPanel createDemoPanel() { JFreeChart jfreechart = createChart(createDataset()); return new ChartPanel(jfreechart); } public static void main(String[] strings) { PieChartDemo1 piechartdemo1 = new PieChartDemo1("Pie Chart Demo 1"); piechartdemo1.pack(); RefineryUtilities.centerFrameOnScreen(piechartdemo1); piechartdemo1.setVisible(true); } } ``` ### 5.10.3 類PieChartDemo2.java 功能: “取出“片區顯示。 效果: ![](img/jfc14822.png) 代碼: ``` private static JFreeChart createChart(PieDataset piedataset) { JFreeChart jfreechart = ChartFactory.createPieChart("PieChart Demo 2", piedataset, true, true, false); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setSectionPaint("One", new Color(160, 160, 255)); pieplot.setSectionPaint("Two", new Color(128, 128, 223)); pieplot.setSectionPaint("Three", new Color(96, 96, 191)); pieplot.setSectionPaint("Four", new Color(64, 64, 159)); pieplot.setSectionPaint("Five", new Color(32, 32, 127)); pieplot.setSectionPaint("Six", new Color(0, 0, 111)); pieplot.setNoDataMessage("No data available"); pieplot.setExplodePercent("Two", 0.5); pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} ({2} percent)")); pieplot.setLabelBackgroundPaint(new Color(220, 220, 220)); pieplot.setLegendLabelToolTipGenerator(new StandardPieSectionLabelGenerator("Tooltip for legend item {0}")); return jfreechart; } ``` 程序代碼說明: + `setSectionPaint("One", new Color(160, 160, 255))`:設置某個片區的填充顏色。第一個參數為片區的標識,第二個參數為色值。 + `setNoDataMessage("No data available")`:設置dataset為null時顯示的提示信息。 + `setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({2} percent)"))`:設置標簽顯示的格式。 + `setLabelBackgroundPaint(new Color(220, 220, 220))`:設置標簽的背景顏色。 + `setLegendLabelToolTipGenerator(new StandardPieSectionLabelGenerator("Tooltip for legend item {0}"))`:設置鼠標滑過圖表是顯示鼠標當前片區的提示信息。 + `pieplot.setExplodePercent("Two", 0.5)`:將第2個片區取出顯示。后面一個參數是取出的距離,是一個比例數。 ### 5.10.4 類PieChartDemo3.java 功能: 顯示了dataset為空時,設置的提示信息。 效果: ![](img/jfc16327.png) 代碼: ``` private static JFreeChart createChart(PieDataset piedataset) { JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 3", null, true, true, false); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setNoDataMessage("沒有有效的數據顯示!"); pieplot.setNoDataMessageFont(new Font("黑體", 2, 20)); pieplot.setNoDataMessagePaint(Color.red); return jfreechart; } ``` 程序代碼說明: + `setNoDataMessage("沒有有效的數據顯示!")`:設置提示信息內容。 + `setNoDataMessageFont(new Font("Serif", 2, 10))`:設置提示信息的字體和大小。 + `setNoDataMessagePaint(Color.red)`:設置提示信息字體的顏色。 ### 5.10.5 類PieChartDemo4.java 功能: 帶有按鈕的圖表,通過對dataset的排序,可以改變片區的位置。 效果: ![](img/jfc16935.png) 代碼: ``` public void actionPerformed(ActionEvent actionevent) { String string = actionevent.getActionCommand(); if ("BY_KEY".equals(string)) { if (!ascendingByKey) { dataset.sortByKeys(SortOrder.ASCENDING); ascendingByKey = true; } else { dataset.sortByKeys(SortOrder.DESCENDING); ascendingByKey = false; } } else if ("BY_VALUE".equals(string)) { if (!ascendingByValue) { dataset.sortByValues(SortOrder.ASCENDING); ascendingByValue = true; } else { dataset.sortByValues(SortOrder.DESCENDING); ascendingByValue = false; } } else if ("RANDOM".equals(string)) { ArrayList arraylist = new ArrayList(dataset.getKeys()); Collections.shuffle(arraylist); DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); Iterator iterator = arraylist.iterator(); while (iterator.hasNext()) { Comparable comparable = (Comparable) iterator.next(); defaultpiedataset.setValue(comparable, dataset .getValue(comparable)); } PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setDataset(defaultpiedataset); dataset = defaultpiedataset; } } ``` 程序代碼說明: + `dataset.sortByKeys(SortOrder.ASCENDING);`通過片區的關鍵值進行升序排序。 + `dataset.sortByValues(SortOrder.DESCENDING);`通過片區的值進行降序排序。 ### 5.10.6 類PieChartDemo5.java 功能: 右邊兩個餅圖為原形的,而左邊兩個為橢圓形的。 效果: ![](img/jfc18265.png) 代碼: ``` public static JPanel createDemoPanel() { JPanel jpanel = new JPanel(new GridLayout(2, 2)); DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); defaultpiedataset.setValue("Section 1", 23.3); defaultpiedataset.setValue("Section 2", 56.5); defaultpiedataset.setValue("Section 3", 43.3); defaultpiedataset.setValue("Section 4", 11.1); // JFreeChart jfreechart = ChartFactory.createPieChart("Chart 1", defaultpiedataset, false, false, false); jfreechart.addSubtitle(new TextTitle("setCircular(true);", new Font( "Dialog", 0, 12))); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setCircular(true); // JFreeChart jfreechart_0_ = ChartFactory.createPieChart("Chart 2", defaultpiedataset, false, false, false); jfreechart_0_.addSubtitle(new TextTitle("setCircular(false);", new Font("Dialog", 0, 12))); PiePlot pieplot_1_ = (PiePlot) jfreechart_0_.getPlot(); pieplot_1_.setCircular(false); // JFreeChart jfreechart_2_ = ChartFactory.createPieChart3D("Chart 3", defaultpiedataset, false, false, false); jfreechart_2_.addSubtitle(new TextTitle("setCircular(true);", new Font( "Dialog", 0, 12))); PiePlot3D pieplot3d = (PiePlot3D) jfreechart_2_.getPlot(); pieplot3d.setForegroundAlpha(0.6F); pieplot3d.setCircular(true); // JFreeChart jfreechart_3_ = ChartFactory.createPieChart3D("Chart 4", defaultpiedataset, false, false, false); jfreechart_3_.addSubtitle(new TextTitle("setCircular(false);", new Font("Dialog", 0, 12))); PiePlot3D pieplot3d_4_ = (PiePlot3D) jfreechart_3_.getPlot(); pieplot3d_4_.setForegroundAlpha(0.6F); pieplot3d_4_.setCircular(false); jpanel.add(new ChartPanel(jfreechart)); jpanel.add(new ChartPanel(jfreechart_0_)); jpanel.add(new ChartPanel(jfreechart_2_)); jpanel.add(new ChartPanel(jfreechart_3_)); jpanel.setPreferredSize(new Dimension(800, 600)); return jpanel; } ``` 程序代碼說明: + `pieplot.setCircular(true)`:設置餅圖為圓形。 + `jpanel.add`方法可以添加多個圖形的panel ### 5.10.7 類PieChartDemo6.java 功能: 顯示餅圖對零值和null值的處理。 效果: ![](img/jfc20307.png) 代碼: ``` public static JPanel createDemoPanel() { JPanel jpanel = new JPanel(new GridLayout(2, 2)); JFreeChart jfreechart = createChart("Pie Chart 1", createDataset()); Font font = new Font("Dialog", 0, 12); jfreechart.addSubtitle(new TextTitle( "Ignore nulls: false; Ignore zeros: false;", font)); JFreeChart jfreechart_0_ = createChart("Pie Chart 2", createDataset()); jfreechart_0_.addSubtitle(new TextTitle( "Ignore nulls: true; Ignore zeros: false;", font)); PiePlot pieplot = (PiePlot) jfreechart_0_.getPlot(); pieplot.setIgnoreNullValues(true); pieplot.setIgnoreZeroValues(false); JFreeChart jfreechart_1_ = createChart("Pie Chart 3", createDataset()); jfreechart_1_.addSubtitle(new TextTitle( "Ignore nulls: false; Ignore zeros: true;", font)); PiePlot pieplot_2_ = (PiePlot) jfreechart_1_.getPlot(); pieplot_2_.setIgnoreNullValues(false); pieplot_2_.setIgnoreZeroValues(true); JFreeChart jfreechart_3_ = createChart("Pie Chart 4", createDataset()); jfreechart_3_.addSubtitle(new TextTitle( "Ignore nulls: true; Ignore zeros: true;", font)); PiePlot pieplot_4_ = (PiePlot) jfreechart_3_.getPlot(); pieplot_4_.setIgnoreNullValues(true); pieplot_4_.setIgnoreZeroValues(true); jpanel.add(new ChartPanel(jfreechart)); jpanel.add(new ChartPanel(jfreechart_0_)); jpanel.add(new ChartPanel(jfreechart_1_)); jpanel.add(new ChartPanel(jfreechart_3_)); return jpanel; } ``` 程序代碼說明: + `pieplot.setIgnoreNullValues(true)`:設置餅圖忽略null值,即是null值將不顯示。 + `pieplot.setIgnoreZeroValues(false);`設置餅圖不忽略零值。即圖表中顯示出零值。 ### 5.10.8 類PieChartDemo7.java 功能: 圖表能夠旋轉,標簽也隨之移動。 效果: ![](img/jfc21906.png) 代碼: ``` public static JPanel createDemoPanel() { PieDataset piedataset = createDataset(14); JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 7", piedataset, false, true, false); jfreechart.setBackgroundPaint(new Color(222, 222, 255)); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setBackgroundPaint(Color.white); pieplot.setCircular(true); pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator( "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat .getPercentInstance())); pieplot.setNoDataMessage("No data available"); ChartPanel chartpanel = new ChartPanel(jfreechart); chartpanel.setPreferredSize(new Dimension(500, 270)); Rotator rotator = new Rotator(pieplot); rotator.start(); return chartpanel; } ``` 程序代碼說明: + 使用Rotator對象,旋轉餅圖。代碼如上。 ### 5.10.9 類PieChartDemo8.java 功能: 編寫自定義標簽產生器,將Two標簽不顯示。 效果: ![](img/jfc22779.png) 代碼: ``` private static JFreeChart createChart(PieDataset piedataset) { JFreeChart jfreechart = ChartFactory.createPieChart("Pie Chart Demo 8", piedataset, false, true, false); PiePlot pieplot = (PiePlot) jfreechart.getPlot(); pieplot.setLabelGenerator(new CustomLabelGenerator()); return jfreechart; } static class CustomLabelGenerator implements PieSectionLabelGenerator { public String generateSectionLabel(PieDataset piedataset, Comparable comparable) { String string = null; if (piedataset != null && !comparable.equals("Two")) string = comparable.toString(); return string; } public AttributedString generateAttributedSectionLabel( PieDataset piedataset, Comparable comparable) { Object object = null; String string = comparable.toString(); String string_0_ = (string + " : " + String.valueOf(piedataset .getValue(comparable))); AttributedString attributedstring = new AttributedString(string_0_); attributedstring.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, 0, string.length() - 1); return attributedstring; } } ``` 程序代碼說明: + 自定義`CustomLabelGenerator`,必須實現接口`PieSectionLabelGenerator`。 ### 5.10.10 類PieChart3DDemo1.java 功能: 3D效果的餅圖。 效果: ![](img/jfc23989.png) 代碼: ``` private static JFreeChart createChart(PieDataset piedataset) { JFreeChart jfreechart = ChartFactory.createPieChart3D( "Pie Chart 3D Demo 1", piedataset, true, true, false); PiePlot3D pieplot3d = (PiePlot3D) jfreechart.getPlot(); pieplot3d.setStartAngle(180.0); pieplot3d.setDirection(Rotation.CLOCKWISE); pieplot3d.setForegroundAlpha(0.5F); pieplot3d.setNoDataMessage("No data to display"); return jfreechart; } ``` 程序代碼說明: + 使用`ChartFactory`的方法`createPieChart3D`創建3D效果的餅圖。 + `setStartAngle(180.0)`:設置旋轉角度。 + `setDirection(Rotation.CLOCKWISE)`:設置旋轉方向,`Rotation.CLOCKWISE`為順時針。 + `setForegroundAlpha(0.5F)`:設置圖表透明圖0.0~1.0范圍。0.0為完全透明,1.0為完全不透明。 ### 5.10.11 類MultiplePieChartDemo1.java 功能: 使用CategoryDataset數據集,在一個圖表上產生多個餅圖。 效果: ![](img/jfc24710.png) 代碼: ``` private static CategoryDataset createDataset() { double[][] ds = { { 3.0, 4.0, 3.0, 5.0 }, { 5.0, 7.0, 6.0, 8.0 }, { 5.0, 7.0, Double.NaN, 3.0 }, { 1.0, 2.0, 3.0, 4.0 }, { 2.0, 3.0, 2.0, 3.0 } }; CategoryDataset categorydataset = DatasetUtilities .createCategoryDataset("Region ", "Sales/Q", ds); return categorydataset; } ``` 程序代碼說明: + 創建`CategoryDataset`的方法。 ``` private static JFreeChart createChart(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createMultiplePieChart( "Multiple Pie Chart", categorydataset, TableOrder.BY_ROW, true, true, false); MultiplePiePlot multiplepieplot = (MultiplePiePlot) jfreechart .getPlot(); JFreeChart jfreechart_0_ = multiplepieplot.getPieChart(); PiePlot pieplot = (PiePlot) jfreechart_0_.getPlot(); pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}")); pieplot.setLabelFont(new Font("SansSerif", 0, 8)); pieplot.setInteriorGap(0.3); return jfreechart; } ``` 程序代碼說明: + 使用`ChartFactory`的方法`createMultiplePieChart()`創建多個餅圖的圖表。 + `multiplepieplot.getPieChart()`:獲得單個餅圖的圖表。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看