今天有小夥伴問到我怎麼使用jfreeChat生成圖標,去年就有一個這方便的的總結,今天再遇到,就總結出來,供你們參考:java
第一個:數組
建立柱狀圖,效果圖以下:![](http://static.javashuo.com/static/loading.gif)
柱狀圖代碼以下:
package cn.xfz.image; import java.awt.Color; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; 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.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; /** * 建立柱狀圖 * @author Administrator * */ public class CreateBarChartA { public static void main(String[] args) { //3D柱狀圖 makeBarChar3D(); } /** * 內部類 * 得到數據及 * @return */ public static CategoryDataset getDataset(){ //定義一個數組,聲明每組要顯示的數據 String [] rowKeys={"CPU","硬盤","內存"}; //定義顯示多少組 String [] columnKeys={"惠州","上海","深圳","北京","雲南"}; //定義一個二維數組 double [][] data=new double[][]{ {100,356,524,456,42}, {200,350,124,256,142}, {100,156,324,406,342} }; // DatasetUtilities 數據集的工具類 CategoryDataset(柱狀圖的數據集) /*CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,data); return dataset; */ CategoryDataset dataset = DatasetUtilities.createCategoryDataset( rowKeys, columnKeys, data); return dataset; } /** * 生成立體柱狀圖 */ public static void makeBarChar3D(){ String title="電腦配件3月的銷售量"; // 1.得到數據集 CategoryDataset dataset = getDataset(); JFreeChart chart = ChartFactory.createBarChart3D(title, "配件", //目錄軸顯示的標籤 "銷量", //數值軸顯示的標籤 dataset, PlotOrientation.VERTICAL, //圖表顯示的方向 true, //是否生成圖例 true, //是否生成工具提示 true //是否生成連接路徑 ); //設置標題字體 Font font = new Font("宋體",Font.BOLD,18); TextTitle textTitle = new TextTitle(); textTitle.setFont(font); chart.setTitle(textTitle); //設置背景顏色RGB格式 chart.setBackgroundPaint(new Color(255,255,255)); //得到柱狀圖的plot對象 CategoryPlot plot = chart.getCategoryPlot(); //取得X軸 CategoryAxis categoryAxis = plot.getDomainAxis(); //設置X軸顯示的標籤的字體 categoryAxis.setLabelFont(new Font("宋體", Font.BOLD, 16)); //設置X軸標記的字體 categoryAxis.setTickLabelFont(new Font("宋體",Font.TRUETYPE_FONT,16)); //取得Y軸 ValueAxis rangeAxis = plot.getRangeAxis(); //設置Y軸顯示的標籤的字體 rangeAxis.setLabelFont(new Font("宋體", Font.BOLD, 16)); //得到legend LegendTitle legend = chart.getLegend(); legend.setItemFont(new Font("宋體", Font.BOLD, 16)); //建立圖標的窗體 ChartFrame frame = new ChartFrame(title, chart, true); //窗體大小設置爲自動適應 frame.pack(); //設置爲可見 frame.setVisible(true); } }
第二個:字體設置後的柱狀圖 ,效果圖以下:微信
代碼以下:網絡
package cn.xfz.image; import java.awt.Color; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; /** * 建立柱狀圖 * */ public class CreateBarcharB { public static void main(String[] args) { //3D柱狀圖 makeBarChart3D(); } /** * 得到數據集。 * * @return org.jfree.data.category.CategoryDataset */ private static CategoryDataset getDataset() { // 定義一個數組聲明每組須要體現的數據 String[] rowKeys = { "CPU", "硬盤", "內存" }; // 定義有多少組 String[] columnKeys = { "北京", "上海", "廣州", "南京", "深圳" }; // 各個組的數據 double[][] data = new double[][] { { 751, 800, 260, 600, 200 }, { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } }; // DatasetUtilities 數據集的工具類 CategoryDataset(柱狀圖的數據集) CategoryDataset dataset = DatasetUtilities.createCategoryDataset( rowKeys, columnKeys, data); return dataset; } /** * 在工廠裏直接設置字體 * 生成柱狀圖。 */ public static void makeBarChart3D() { String title = "電腦配件三月銷量"; // 1.得到數據集 CategoryDataset dataset = getDataset(); //處理中文亂碼 StandardChartTheme chartTheme = new StandardChartTheme("CN"); //標題 chartTheme.setExtraLargeFont(new Font("宋體",Font.PLAIN,16)); //圖例 chartTheme.setRegularFont(new Font("宋體",Font.PLAIN,16)); //軸向字體 chartTheme.setLargeFont(new Font("宋體",Font.PLAIN,16)); ChartFactory.setChartTheme(chartTheme); // 2.建立一個柱狀圖 JFreeChart chart = ChartFactory.createBarChart3D(title, // 圖表標題 "配件", // 目錄軸的顯示標籤 "銷量", // 數值軸的顯示標籤 dataset, // 數據集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例 legend true, // 是否生成工具(提示) 提示 true // 是否生成URL連接 ); // 建立圖表的窗體 ChartFrame frame = new ChartFrame(title, chart, true); // 窗體的大小設置爲自適應 frame.pack(); // 設置爲可見 frame.setVisible(true); } }
第三個:線型圖,效果圖以下dom
代碼以下:工具
package cn.xfz.image; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; /** * 建立線型圖 * */ public class CreateLineChart { public static void main(String[] args) { //折線圖 makeLineChart(); } /** * 得到數據集。 * * @return org.jfree.data.category.CategoryDataset */ private static CategoryDataset getDataset() { // 定義一個數組聲明每組須要體現的數據 String[] rowKeys = { "CPU", "硬盤", "內存" }; // 定義有多少組 String[] columnKeys = { "北京", "上海", "廣州", "南京", "深圳" }; // 各個組的數據 double[][] data = new double[][] { { 751, 800, 260, 600, 200 }, { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } }; // DatasetUtilities 數據集的工具類 CategoryDataset(柱狀圖的數據集) CategoryDataset dataset = DatasetUtilities.createCategoryDataset( rowKeys, columnKeys, data); return dataset; } /** * 生成折現圖 */ public static void makeLineChart(){ String title = "電腦配件三月銷量"; // 1.得到數據集 CategoryDataset dataset = getDataset(); //處理中文亂碼 StandardChartTheme chartTheme = new StandardChartTheme("CN"); //標題 chartTheme.setExtraLargeFont(new Font("宋體",Font.PLAIN,16)); //圖例 chartTheme.setRegularFont(new Font("宋體",Font.PLAIN,16)); //軸向字體 chartTheme.setLargeFont(new Font("宋體",Font.PLAIN,16)); ChartFactory.setChartTheme(chartTheme); JFreeChart chart = ChartFactory.createLineChart(title, "配件", // 目錄軸的顯示標籤 "銷量", // 數值軸的顯示標籤 dataset, // 數據集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例 legend true, // 是否生成工具(提示) 提示 false // 是否生成URL連接 ); // 建立圖表的窗體 ChartFrame frame = new ChartFrame(title, chart, true); // 窗體的大小設置爲自適應 frame.pack(); // 設置爲可見 frame.setVisible(true); } }
第四個:扇形圖,效果圖以下字體
代碼以下:spa
package cn.xfz.image; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.data.general.DefaultPieDataset; /** * 生成扇形圖 * */ public class CreatePieChart { public static void main(String[] args) { //生成扇形圖 makePieChart3D(); } /** * 獲取結果集 * @return */ public static DefaultPieDataset getDataset(){ DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("研發人員", 35); dataset.setValue("市場策劃人員", 10); dataset.setValue("市場推廣人員", 25); dataset.setValue("網絡維護人員", 5); dataset.setValue("財務人員", 15); return dataset; } /** * 生成扇形圖 */ public static void makePieChart3D(){ String title = "各部門人員比例"; // 得到數據集 DefaultPieDataset dataset = getDataset(); // 處理中文亂碼 StandardChartTheme chartTheme = new StandardChartTheme("CN"); // 標題 chartTheme.setExtraLargeFont(new Font("宋體", Font.BOLD, 20)); // legend chartTheme.setRegularFont(new Font("宋體", Font.PLAIN, 18)); // 軸向字體 chartTheme.setLargeFont(new Font("宋體", Font.PLAIN, 16)); ChartFactory.setChartTheme(chartTheme); JFreeChart chart = ChartFactory.createPieChart3D( title, //標題 dataset, // 圖表數據集 true, // 是否顯示圖例 false, // 是否生成工具(提示) false // 是否生成URL連接 ); // 建立圖表的窗體 ChartFrame frame = new ChartFrame(title, chart, true); // 窗體的大小設置爲自適應 frame.pack(); // 設置爲可見 frame.setVisible(true); } }
第五個:時序圖,效果圖以下code
代碼以下:orm
package cn.xfz.image; import java.awt.Font; import java.text.SimpleDateFormat; import java.util.Date; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.data.time.Day; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; public class CreateTimeSeriesChart { public static void makeTimeSeriesChart() { // 實例化TimeSeries對象 TimeSeries timeseries = new TimeSeries("Data"); // 實例化Day Day day = new Day(1,1,2009); double d = 3000D; // 添加一年365天的數據 for(int i = 0 ; i < 365 ; i++){ // 建立隨機數據 d = d+(Math.random() - 0.5) * 10; // 向數據集合中添加數據 timeseries.add(day,d); day = (Day)day.next();//下一天 } // 建立TimeSeriesCollection集合對象(數據集) TimeSeriesCollection dataset = new TimeSeriesCollection(timeseries); // 處理中文亂碼 StandardChartTheme chartTheme = new StandardChartTheme("CN"); // 標題 chartTheme.setExtraLargeFont(new Font("宋體", Font.BOLD, 20)); // legend chartTheme.setRegularFont(new Font("宋體", Font.PLAIN, 18)); // 軸向字體 chartTheme.setLargeFont(new Font("宋體", Font.PLAIN, 16)); ChartFactory.setChartTheme(chartTheme); // 生成時序圖 JFreeChart chart = ChartFactory.createTimeSeriesChart("上證指數時序圖",//標題 "日期", //時間軸標籤 "指數", //數據軸標籤 dataset,//數據集合 true, //是否顯示圖例標識 true, //是否顯示tooltips false); //是否支持超連接 ChartFrame cf = new ChartFrame("時序圖", chart); cf.pack(); cf.setVisible(true); } public static void main(String[] args) { // 時序圖 makeTimeSeriesChart(); } }
今天就到這了,也沒有太多的廢話,不懂得朋友直接@我微信:qh2827