http://supben.iteye.com/blog/821779
?
jfreecharts 報(bào)表
jfreechartOS
我們以折線圖為例子
第一步,構(gòu)建數(shù)據(jù)集
Java代碼 ?
?????????private?CategoryDataset?getDataset()?{ ??????????DefaultCategoryDataset?dataset?=?new?DefaultCategoryDataset(); ????????????dataset.addValue(2.8,?"冰箱",?"1月"); ??????????dataset.addValue(4.2,?"冰箱",?"2月"); ??????????dataset.addValue(3.9,?"冰箱",?"3月"); ??????????dataset.addValue(3.8,?"冰箱",?"4月"); ??????????dataset.addValue(4.2,?"冰箱",?"5月"); ??????????dataset.addValue(3.9,?"冰箱",?"6月"); ??????????dataset.addValue(1.7,?"冰箱",?"7月"); ??????????dataset.addValue(4.2,?"冰箱",?"8月"); ??????????dataset.addValue(3.9,?"冰箱",?"9月"); ??????????dataset.addValue(2.5,?"冰箱",?"10月"); ??????????dataset.addValue(4.2,?"冰箱",?"11月"); ??????????dataset.addValue(3.9,?"冰箱",?"12月"); ????????????dataset.addValue(1.2,?"彩電",?"1月"); ??????????dataset.addValue(3.2,?"彩電",?"2月"); ??????????dataset.addValue(4.9,?"彩電",?"3月"); ??????????dataset.addValue(2.5,?"彩電",?"4月"); ??????????dataset.addValue(3.2,?"彩電",?"5月"); ??????????dataset.addValue(1.9,?"彩電",?"6月"); ??????????dataset.addValue(2.7,?"彩電",?"7月"); ??????????dataset.addValue(3.2,?"彩電",?"8月"); ??????????dataset.addValue(3.9,?"彩電",?"9月"); ??????????dataset.addValue(3.0,?"彩電",?"10月"); ??????????dataset.addValue(1.2,?"彩電",?"11月"); ??????????dataset.addValue(1.9,?"彩電",?"12月"); ????????????return?dataset; ????????}?? /*** 獲取數(shù)據(jù)集* @return*/private CategoryDataset getDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(2.8, "冰箱", "1月");dataset.addValue(4.2, "冰箱", "2月");dataset.addValue(3.9, "冰箱", "3月");dataset.addValue(3.8, "冰箱", "4月");dataset.addValue(4.2, "冰箱", "5月");dataset.addValue(3.9, "冰箱", "6月");dataset.addValue(1.7, "冰箱", "7月");dataset.addValue(4.2, "冰箱", "8月");dataset.addValue(3.9, "冰箱", "9月");dataset.addValue(2.5, "冰箱", "10月");dataset.addValue(4.2, "冰箱", "11月");dataset.addValue(3.9, "冰箱", "12月");dataset.addValue(1.2, "彩電", "1月");dataset.addValue(3.2, "彩電", "2月");dataset.addValue(4.9, "彩電", "3月");dataset.addValue(2.5, "彩電", "4月");dataset.addValue(3.2, "彩電", "5月");dataset.addValue(1.9, "彩電", "6月");dataset.addValue(2.7, "彩電", "7月");dataset.addValue(3.2, "彩電", "8月");dataset.addValue(3.9, "彩電", "9月");dataset.addValue(3.0, "彩電", "10月");dataset.addValue(1.2, "彩電", "11月");dataset.addValue(1.9, "彩電", "12月");return dataset;}
第二步,根據(jù)數(shù)據(jù)集構(gòu)建折線圖
Java代碼 ?
private?JFreeChart?createChart()?{ ??????????CategoryDataset?dataset?=?getDataset(); ????????????????????JFreeChart?line?=?ChartFactory.createLineChart("折線圖",?"時(shí)間",?"銷售額(百萬)",?dataset,?PlotOrientation.VERTICAL,?true, ??????????????????true,?false); ????????????line.setBackgroundPaint(new?Color(200,?200,?255)); ????????????????????line.getTitle().setFont(new?Font("黑體",?Font.BOLD,?18)); ????????????????????line.getLegend().setItemFont(new?Font("黑體",?Font.BOLD,?12)); ????????????CategoryPlot?plot?=?line.getCategoryPlot(); ??????????????????????plot.setRangeGridlinePaint(new?Color(70,?70,?170)); ??????????????????????????????????LineAndShapeRenderer?renderer?=?(LineAndShapeRenderer)?plot.getRenderer(); ??????????????????????renderer.setSeriesStroke(0,?new?BasicStroke(2.0f)); ??????????renderer.setSeriesPaint(0,?new?Color(0,?0,?255)); ??????????????????????renderer.setSeriesStroke(1,?new?BasicStroke(2.0f)); ??????????renderer.setSeriesPaint(1,?new?Color(255,?0,?0)); ??????????????????????renderer.setBaseShapesVisible(true); ??????????????????????renderer.setBaseItemLabelGenerator(new?StandardCategoryItemLabelGenerator()); ??????????renderer.setBaseItemLabelsVisible(true); ??????????????????????CategoryAxis?axis?=?plot.getDomainAxis(); ????????????????????ValueAxis?numberAxis?=?plot.getRangeAxis(); ?????????? ??????????axis.setLabelFont(new?Font("黑體",?Font.BOLD,?12)); ??????????axis.setTickLabelFont(new?Font("黑體",?Font.BOLD,?12)); ?????????? ??????????numberAxis.setTickLabelFont(new?Font("黑體",?Font.BOLD,?12)); ??????????numberAxis.setLabelFont(new?Font("黑體",?Font.BOLD,?12)); ????????????return?line; ??????}?? private JFreeChart createChart() {CategoryDataset dataset = getDataset();//標(biāo)題,x軸,y軸,數(shù)據(jù)集,圖標(biāo)方向,是否顯示圖例,是否生成工具,是否生成urlJFreeChart line = ChartFactory.createLineChart("折線圖", "時(shí)間", "銷售額(百萬)", dataset, PlotOrientation.VERTICAL, true,true, false);line.setBackgroundPaint(new Color(200, 200, 255));//設(shè)置標(biāo)題文字line.getTitle().setFont(new Font("黑體", Font.BOLD, 18));//設(shè)置底部圖例字體line.getLegend().setItemFont(new Font("黑體", Font.BOLD, 12));CategoryPlot plot = line.getCategoryPlot();//網(wǎng)格線的顏色,就是與x軸平行的一條一條的虛線plot.setRangeGridlinePaint(new Color(70, 70, 170));//設(shè)置圖區(qū)的背景色//plot.setBackgroundPaint(new Color(255, 255, 255));LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();//設(shè)置第一個(gè)根線為藍(lán)色加粗renderer.setSeriesStroke(0, new BasicStroke(2.0f));renderer.setSeriesPaint(0, new Color(0, 0, 255));//設(shè)置第2根線為紅色加粗renderer.setSeriesStroke(1, new BasicStroke(2.0f));renderer.setSeriesPaint(1, new Color(255, 0, 0));//設(shè)置數(shù)據(jù)點(diǎn)可見renderer.setBaseShapesVisible(true);//顯示數(shù)據(jù)點(diǎn)的值可見renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);//獲取x軸CategoryAxis axis = plot.getDomainAxis();//獲取y軸ValueAxis numberAxis = plot.getRangeAxis();axis.setLabelFont(new Font("黑體", Font.BOLD, 12));axis.setTickLabelFont(new Font("黑體", Font.BOLD, 12));numberAxis.setTickLabelFont(new Font("黑體", Font.BOLD, 12));numberAxis.setLabelFont(new Font("黑體", Font.BOLD, 12));return line;}
第3步,輸出圖片
Java代碼 ?
??????private?void?createPng()?{ ??????????JFreeChart?jfreechart?=?createChart(); ??????????OutputStream?os; ??????????try?{ ??????????????os?=?new?FileOutputStream("d:/line.png"); ??????????????ChartUtilities.writeChartAsPNG(os,?jfreechart,?800,?400); ??????????????os.close(); ??????????}?catch?(Exception?e)?{ ??????????????e.printStackTrace(); ??????????} ??????}?? //生成圖片private void createPng() {JFreeChart jfreechart = createChart();OutputStream os;try {os = new FileOutputStream("d:/line.png");ChartUtilities.writeChartAsPNG(os, jfreechart, 800, 400);os.close();} catch (Exception e) {e.printStackTrace();}}
注:附件是代碼和支持jar包,包括,折線圖,餅圖,柱狀圖的例子
總結(jié)
以上是生活随笔為你收集整理的JFree chart的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。