隨著時代的不斷進步與高速發展java中餅狀圖怎么做,越來越多的人開始謀求不同的發展,新興技術的學習是大多數人的選擇。今天就為大家介紹一下java中的數據統計圖的分類java中餅狀圖怎么做,并且通過具體的圖片及實例為大家展示。
首先,java中的數據統計圖主要包括柱形圖、餅狀圖和折線圖三種。接下來我們看一下應該如何操作。
所有操作的共同步驟是:1.建立java項目,在這個項目上建立一個新的文件夾lib;2.將上述三個jar包,復制到lib;3.然后右鍵點擊這個java項目,選擇;4.在左側列表里選中Java Build Path,右側選中;5.點擊Add JARs;6.然后去選擇這個項目中lib文件夾中的三個jar,點擊確定;7.成功后,項目中會多一個文件夾為: 。
然后下面是各個分類的代碼展示。
一、柱形圖代碼展示:
import?java.awt.Font; import?org.jfree.chart.ChartFactory; import?org.jfree.chart.ChartPanel; import?org.jfree.chart.JFreeChart; import?org.jfree.chart.axis.CategoryAxis; import?org.jfree.chart.axis.ValueAxis; import?org.jfree.chart.plot.CategoryPlot; import?org.jfree.chart.plot.PlotOrientation; import?org.jfree.data.category.CategoryDataset; import?org.jfree.data.category.DefaultCategoryDataset; public?class?BarChart { ????ChartPanel?frame1; ????public?BarChart() ????{ ????????CategoryDataset?dataset?=?getDataSet(); ????????JFreeChart?chart?=?ChartFactory.createBarChart3D( ????????????"水果",?//?圖表標題 ????????????"水果種類",?//?目錄軸的顯示標簽 ????????????"數量",?//?數值軸的顯示標簽 ????????????dataset,?//?數據集 ????????????PlotOrientation.VERTICAL,?//?圖表方向:水平、垂直 ????????????true,?//?是否顯示圖例(對于簡單的柱狀圖必須是false) ????????????false,?//?是否生成工具 ????????????false?//?是否生成URL鏈接 ????????); ????????//從這里開始 ????????CategoryPlot?plot?=?chart.getCategoryPlot();?//獲取圖表區域對象 ????????CategoryAxis?domainAxis?=?plot.getDomainAxis();?//水平底部列表 ????????domainAxis.setLabelFont(new?Font("黑體",?Font.BOLD,?14));?//水平底部標題 ????????domainAxis.setTickLabelFont(new?Font("宋體",?Font.BOLD,?12));?//垂直標題 ????????ValueAxis?rangeAxis?=?plot.getRangeAxis();?//獲取柱狀 ????????rangeAxis.setLabelFont(new?Font("黑體",?Font.BOLD,?15)); ????????chart.getLegend()????????????.setItemFont(new?Font("黑體",?Font.BOLD,?15)); ????????chart.getTitle() ????????????.setFont(new?Font("宋體",?Font.BOLD,?20));?//設置標題字體 ????????//到這里結束,雖然代碼有點多,但只為一個目的,解決漢字亂碼問題 ????????frame1?=?new?ChartPanel(chart,?true);?//這里也可以用chartFrame,可以直接生成一個獨立的Frame ????} ????private?static?CategoryDataset?getDataSet() ????{ ????????DefaultCategoryDataset?dataset?=?new?DefaultCategoryDataset(); ????????dataset.addValue(100,?"北京",?"蘋果"); ????????dataset.addValue(100,?"上海",?"蘋果"); ????????dataset.addValue(100,?"廣州",?"蘋果"); ????????dataset.addValue(200,?"北京",?"梨子"); ????????dataset.addValue(200,?"上海",?"梨子"); ????????dataset.addValue(200,?"廣州",?"梨子"); ????????dataset.addValue(300,?"北京",?"葡萄"); ????????dataset.addValue(300,?"上海",?"葡萄"); ????????dataset.addValue(300,?"廣州",?"葡萄"); ????????dataset.addValue(400,?"北京",?"香蕉"); ????????dataset.addValue(400,?"上海",?"香蕉"); ????????dataset.addValue(400,?"廣州",?"香蕉"); ????????dataset.addValue(500,?"北京",?"荔枝"); ????????dataset.addValue(500,?"上海",?"荔枝"); ????????dataset.addValue(500,?"廣州",?"荔枝"); ????????return?dataset; ????} ????public?ChartPanel?getChartPanel() ????{ ????????return?frame1; ????} }
效果圖如下:
假如我們把 (){}方法中的數據變化一下后,又會形成另一種效果,比如說我們改成:
private?static?CategoryDataset?getDataSet() { ????DefaultCategoryDataset?dataset?=?new?DefaultCategoryDataset(); ????dataset.addValue(100,?"蘋果",?"蘋果");????dataset.addValue(200,?"梨子",?"梨子"); ????dataset.addValue(300,?"葡萄",?"葡萄"); ????dataset.addValue(400,?"香蕉",?"香蕉"); ????dataset.addValue(500,?"荔枝",?"荔枝"); ????return?dataset; }
效果圖如下:
二、餅狀圖的代碼展示:
package?com.njue.testJFreeChart; import?java.awt.Font; import?java.text.DecimalFormat; import?java.text.NumberFormat; import?javax.swing.JPanel; import?org.jfree.chart.ChartFactory; import?org.jfree.chart.ChartPanel; import?org.jfree.chart.JFreeChart; import?org.jfree.chart.labels.StandardPieSectionLabelGenerator; import?org.jfree.chart.plot.PiePlot; import?org.jfree.data.general.DefaultPieDataset; public?class?PieChart { ????ChartPanel?frame1; ????public?PieChart() ????{ ????????DefaultPieDataset?data?=?getDataSet(); ????????JFreeChart?chart?=?ChartFactory.createPieChart3D("水果產量",?data,?true,?false,?false); ????????//設置百分比 ????????PiePlot?pieplot?=?(PiePlot)?chart.getPlot(); ????????DecimalFormat?df?=?new?DecimalFormat("0.00%");?//獲得一個DecimalFormat對象,主要是設置小數問題 ????????NumberFormat?nf?=?NumberFormat.getNumberInstance();?//獲得一個NumberFormat對象 ????????StandardPieSectionLabelGenerator?sp1?=?new?StandardPieSectionLabelGenerator("{0}??{2}",?nf,?df);?//獲得StandardPieSectionLabelGenerator對象 ????????pieplot.setLabelGenerator(sp1);?//設置餅圖顯示百分比 ????????//沒有數據的時候顯示的內容 ????????pieplot.setNoDataMessage("無數據顯示"); ????????pieplot.setCircular(false); ????????pieplot.setLabelGap(0.02?D); ????????pieplot.setIgnoreNullValues(true);?//設置不顯示空值????????pieplot.setIgnoreZeroValues(true);?//設置不顯示負值 ????????frame1?=?new?ChartPanel(chart,?true); ????????chart.getTitle() ????????????.setFont(new?Font("宋體",?Font.BOLD,?20));?//設置標題字體 ????????PiePlot?piePlot?=?(PiePlot)?chart.getPlot();?//獲取圖表區域對象 ????????piePlot.setLabelFont(new?Font("宋體",?Font.BOLD,?10));?//解決亂碼 ????????chart.getLegend() ????????????.setItemFont(new?Font("黑體",?Font.BOLD,?10)); ????} ????private?static?DefaultPieDataset?getDataSet() ????{ ????????DefaultPieDataset?dataset?=?new?DefaultPieDataset(); ????????dataset.setValue("蘋果",?100); ????????dataset.setValue("梨子",?200); ????????dataset.setValue("葡萄",?300); ????????dataset.setValue("香蕉",?400); ????????dataset.setValue("荔枝",?500); ????????return?dataset; ????} ????public?ChartPanel?getChartPanel() ????{ ????????return?frame1; ????} }
效果圖如下:
三、折線圖的代碼展示:
package?com.njue.testJFreeChart; import?java.awt.Font; import?java.text.SimpleDateFormat; import?org.jfree.chart.ChartFactory; import?org.jfree.chart.ChartPanel; import?org.jfree.chart.JFreeChart; import?org.jfree.chart.axis.DateAxis; import?org.jfree.chart.axis.ValueAxis; import?org.jfree.chart.plot.XYPlot; import?org.jfree.data.time.Month; import?org.jfree.data.time.TimeSeries;import?org.jfree.data.time.TimeSeriesCollection; import?org.jfree.data.xy.XYDataset; public?class?TimeSeriesChart { ????ChartPanel?frame1; ????public?TimeSeriesChart() ????{ ????????XYDataset?xydataset?=?createDataset(); ????????JFreeChart?jfreechart?=?ChartFactory.createTimeSeriesChart("Legal?&?General單位信托基金價格",?"日期",?"價格",?xydataset,?true,?true,?true); ????????XYPlot?xyplot?=?(XYPlot)?jfreechart.getPlot(); ????????DateAxis?dateaxis?=?(DateAxis)?xyplot.getDomainAxis(); ????????dateaxis.setDateFormatOverride(new?SimpleDateFormat("MMM-yyyy")); ????????frame1?=?new?ChartPanel(jfreechart,?true); ????????dateaxis.setLabelFont(new?Font("黑體",?Font.BOLD,?14));?//水平底部標題 ????????dateaxis.setTickLabelFont(new?Font("宋體",?Font.BOLD,?12));?//垂直標題 ????????ValueAxis?rangeAxis?=?xyplot.getRangeAxis();?//獲取柱狀 ????????rangeAxis.setLabelFont(new?Font("黑體",?Font.BOLD,?15)); ????????jfreechart.getLegend() ????????????.setItemFont(new?Font("黑體",?Font.BOLD,?15)); ????????jfreechart.getTitle() ????????????.setFont(new?Font("宋體",?Font.BOLD,?20));?//設置標題字體 ????} ????private?static?XYDataset?createDataset() ????{?//這個數據集有點多,但都不難理解 ????????TimeSeries?timeseries?=?new?TimeSeries("legal?&?general歐洲指數信任" ????????????,?org.jfree.data.time.Month.class); ????????timeseries.add(new?Month(2,?2001),?181.80000000000001?D); ????????timeseries.add(new?Month(3,?2001),?167.30000000000001?D); ????????timeseries.add(new?Month(4,?2001),?153.80000000000001?D); ????????timeseries.add(new?Month(5,?2001),?167.59999999999999?D); ????????timeseries.add(new?Month(6,?2001),?158.80000000000001?D); ????????timeseries.add(new?Month(7,?2001),?148.30000000000001?D); ????????timeseries.add(new?Month(8,?2001),?153.90000000000001?D); ????????timeseries.add(new?Month(9,?2001),?142.69999999999999?D); ????????timeseries.add(new?Month(10,?2001),?123.2?D); ????????timeseries.add(new?Month(11,?2001),?131.80000000000001?D); ????????timeseries.add(new?Month(12,?2001),?139.59999999999999?D); ????????timeseries.add(new?Month(1,?2002),?142.90000000000001?D);
????????timeseries.add(new?Month(2,?2002),?138.69999999999999?D); ????????timeseries.add(new?Month(3,?2002),?137.30000000000001?D); ????????timeseries.add(new?Month(4,?2002),?143.90000000000001?D); ????????timeseries.add(new?Month(5,?2002),?139.80000000000001?D); ????????timeseries.add(new?Month(6,?2002),?137?D); ????????timeseries.add(new?Month(7,?2002),?132.80000000000001?D); ????????TimeSeries?timeseries1?=?new?TimeSeries("legal?&?general英國指數信任" ????????????,?org.jfree.data.time.Month.class); ????????timeseries1.add(new?Month(2,?2001),?129.59999999999999?D); ????????timeseries1.add(new?Month(3,?2001),?123.2?D); ????????timeseries1.add(new?Month(4,?2001),?117.2?D); ????????timeseries1.add(new?Month(5,?2001),?124.09999999999999?D); ????????timeseries1.add(new?Month(6,?2001),?122.59999999999999?D); ????????timeseries1.add(new?Month(7,?2001),?119.2?D); ????????timeseries1.add(new?Month(8,?2001),?116.5?D); ????????timeseries1.add(new?Month(9,?2001),?112.7?D); ????????timeseries1.add(new?Month(10,?2001),?101.5?D); ????????timeseries1.add(new?Month(11,?2001),?106.09999999999999?D); ????????timeseries1.add(new?Month(12,?2001),?110.3?D); ????????timeseries1.add(new?Month(1,?2002),?111.7?D); ????????timeseries1.add(new?Month(2,?2002),?111?D); ????????timeseries1.add(new?Month(3,?2002),?109.59999999999999?D); ????????timeseries1.add(new?Month(4,?2002),?113.2?D); ????????timeseries1.add(new?Month(5,?2002),?111.59999999999999?D); ????????timeseries1.add(new?Month(6,?2002),?108.8?D); ????????timeseries1.add(new?Month(7,?2002),?101.59999999999999?D); ????????TimeSeriesCollection?timeseriescollection?=?new?TimeSeriesCollection(); ????????timeseriescollection.addSeries(timeseries); ????????timeseriescollection.addSeries(timeseries1); ????????return?timeseriescollection; ????} ????public?ChartPanel?getChartPanel() ????{ ????????return?frame1; ????} }
效果圖如下:
上述就是關于在java中數據統計圖的分類以及實際操作過程了。想要了解更多java經典例子及常見問題,敬請關注奇Q工具網。