麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

使用JFreeChart創建圖象

2019-11-18 13:23:19
字體:
來源:轉載
供稿:網友

  一:jfreechart介紹
  jfreechart是一個免費創建圖片的java工具.可以創建如下圖形:
  餅圖(pie charts;)
  曲線圖(line charts )
  柱狀圖(horizontal/vertical bar charts)
  甘特圖(Gantt charts; )
  XY plots and scatter plots;
  time series, high/low/open/close charts and candle stick charts;
  combination charts;
  Pareto charts;
  bubble charts;
  wind plots, meter charts and symbol charts;
  從以下地址可以看到jfreechart可以創建的圖形類型
  http://www.jfree.org/jfreechart/samples.Html
  sourceforge有一個基于jfreechart的項目Cewolf可以很方便的在jsp/servlet中創建圖片
  jfreechart目前(2003-05-08)版本為0.98
  希望得到具體的信息或下載jfreechart請訪問如下站點:
  http://www.jfree.org/jfreechart /
  二:非凡說明:
  jfreechart是一個開源項目,但是文檔是需要40美金去購買的。
  還有一個很重要的問題,jfreechart假如使用中文,他使用的默認字體
  顯示出來的中文會很模糊,你可能需要修改源代碼。
  下面我就舉幾個簡單的例子說明一下如何使用jfreechart創建圖片
  在開發中有可能會導入以下的類
  import com.jrefinery.chart.ChartFactory;
  import com.jrefinery.chart.ChartUtilities;
  import com.jrefinery.chart.JFreeChart;
  import com.jrefinery.chart.TextTitle;
  import com.jrefinery.chart.axis.NumberAxis;
  import com.jrefinery.chart.plot.CategoryPlot;
  import com.jrefinery.chart.plot.PiePlot;
  import com.jrefinery.data.Day;
  import com.jrefinery.data.DefaultCategoryDataset;
  import com.jrefinery.data.DefaultPieDataset;
  import com.jrefinery.data.TimeSeries;
  import com.jrefinery.data.TimeSeriesCollection;
  import com.jrefinery.data.TimeSeriesDataPair;
  在0.98以后包由com.jrefinery.*改變為:org.jfree
  三:創建餅圖
  //圖片標題
  String title = "空調2002年市場占有率";
  //設定數據源
  DefaultPieDataset piedata = new DefaultPieDataset();
  //第一個參數為名稱,第二個參數是double數
  piedata.setValue("聯想", 27.3);
  piedata.setValue("長城", 12.2);
  piedata.setValue("海爾", 5.5);
  piedata.setValue("美的", 17.1);
  piedata.setValue("松下", 9.0);
  piedata.setValue("科龍", 19.0);
  //創建JFreeChart,都使用ChartFactory來創建JFreeChart,很標準的工廠設計模式
  JFreeChart chart =
  ChartFactory.createPieChart(title, piedata, true, true, true);
  //設定圖片標題
  chart.setTitle(new TextTitle(title, new Font("隸書", Font.ITALIC, 15)));
  //chart.addSuBTitle(new TextTitle("2002財年分析", new Font("隸書", Font.ITALIC, 12)));
  //設定背景
  chart.setBackgroundPaint(Color.white);
  //chart.s
  //餅圖使用一個PiePlot
  PiePlot pie = (PiePlot)chart.getPlot();
  //pie.setSectionLabelType(PiePlot.NAME_AND_PERCENT_LABELS);
  pie.setSectionLabelType(PiePlot.NAME_AND_VALUE_LABELS);
  //設定顯示格式(名稱加百分比或數值)
  pie.setPercentFormatString("#,###0.0#%");
  //設定百分比顯示格式
  pie.setBackgroundPaint(Color.white);
  pie.setSectionLabelFont(new Font("黑體", Font.TRUETYPE_FONT, 12));
  //設定背景透明度(0-1.0之間)
  pie.setBackgroundAlpha(0.6f);
  //設定前景透明度(0-1.0之間)
  pie.setForegroundAlpha(0.90f);
  //輸出文件到指定目錄
  String rfname = MathUtil.getRoundCode(12) + ".jpeg";
  String fileName = "d:/test/" + rfname;
  try {
  //可以保存文件為jpg或png格式。
  ChartUtilities.saveChartAsJPEG(new File(fileName), 100, chart, 600, 600);
  //第一個參數為文件名
  //第二個參數質量
  //第三個參數為哪個chart創建圖片
  //第四個寬度
  //第五個高度
  } catch (IOException exz) {
  System.out.  }
  其實使用JFreeChart創建圖片很簡單,不同的的圖片類型區別在于設置數據集
  四:創建曲線圖
  // create a default chart based on some sample data...
  //曲線圖標題
  String title = "趨勢分析";
  //曲線圖X軸提示
  String domain = "月份走勢";
  //曲線圖Y軸提示
  String range = "應收余額";
  //曲線圖自標題
  String subtitleStr = "2003財年分析";
  //創建時間數據源
  //每一個TimeSeries在圖上是一條曲線
  TimeSeries ca = new TimeSeries("用友");
  for (int i = 1999; i < 2005; i++) {
  for (int mon = 0; mon < 12; mon++) {
  //ca.add(new Month(mon + 1, i), new Double(500 + Math.random() * 100));
  //TimeSeriesDataPair是一個時間點的數值體現
  ca.add(
  new TimeSeriesDataPair(
  new Day(1, mon + 1, i),
  new Double(500 + Math.random() * 100)));
  }
  }
  TimeSeries ibm = new TimeSeries("金碟");
  for (int i = 1999; i < 2005; i++) {
  for (int mon = 0; mon < 12; mon++) {
  //ibm.add(new Month(mon+1,i),new Double(400-Math.random()*100));
  ibm.add(
  new TimeSeriesDataPair(
  new Day(1, mon + 1, i),
  new Double(400 - Math.random() * 100)));
  }
  }
  TimeSeries king = new TimeSeries("東軟");
  for (int i = 1999; i < 2005; i++) {
  for (int mon = 0; mon < 12; mon++) {
  //ibm.add(new Month(mon+1,i),new Double(400-Math.random()*100));
  king.add(
  new TimeSeriesDataPair(
  new Day(1, mon + 1, i),
  new Double(300 - Math.random() * 100)));
  }
  }
  //時間曲線數據集合
  TimeSeriesCollection dataset = new TimeSeriesCollection();
  dataset.addSeries(ca);
  dataset.addSeries(ibm);
  dataset.addSeries(king);
  //dataset.addSeries(jpy);
  //dataset.addSeries(mav);
  //時間曲線元素
  JFreeChart chart =
  ChartFactory.createTimeSeriesChart(
  title,
  domain,
  range,
  dataset,
  true,
  true,
  false);
  // then customise it a little...
  TextTitle subtitle =
  new TextTitle(subtitleStr, new Font("黑體", Font.BOLD, 12));
  chart.addSubtitle(subtitle);
  chart.setTitle(new TextTitle(title, new Font("隸書", Font.ITALIC, 15)));
  //pie.setSeriesLabelFont(new Font("黑體", Font.BOLD, 15));
  chart.setBackgroundPaint(
  new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
  //sysout
  //輸出文件到指定目錄
  String rfname = MathUtil.getRoundCode(22) + ".jpeg";
  String fileName = "d:/test/" + rfname;
  try {
  //for
  //System.out.println();
  ChartUtilities.saveChartAsJPEG(new File(fileName), 100, chart, 600, 600);
  // log.info("....Create image File:" + fileName);
  } catch (IOException exz) {
  System.out.print("....Cant’t Create image File");
  }
  五:創建柱狀圖
  String title = "柱狀圖測試";
  String domain = "單位比較";
  String range = "數值";
  //CategoryDataset data = DemoDatasetFactory.createCategoryDataset();
  DefaultCategoryDataset data = new DefaultCategoryDataset();
  for (int r = 0; r < 5; r++) {
  String rowKey = "單位 [" + (r + 1)+"]" ;
  //第一層循環:分析對象
  for (int c = 0; c < 6; c++) {
  //第二層循環:分析對象在時間點上的數據
  String columnKey = "2001年" + (c + 1) + "月";
  data.addValue(new Double(r * c + 5), rowKey, columnKey);
  }
  }
  JFreeChart chart =
  ChartFactory.createVerticalBarChart(
  title,
  domain,
  range,
  data,
  true,
  true,
  false);
  // then customise it a little...
  chart.setBackgroundPaint(
  new GradientPaint(0, 0, Color.white, 1000, 0, Color.red));
  chart.setTitle(new TextTitle(title, new Font("隸書", Font.ITALIC, 15)));
  CategoryPlot plot = (CategoryPlot)chart.getPlot();
  plot.setForegroundAlpha(0.9f);
  plot.setValueLabelFont(new Font("黑體", Font.TRUETYPE_FONT, 12));
  //plot.setSectionLabelFont(new Font("黑體", Font.TRUETYPE_FONT, 12));
  //注重以下代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产高潮好爽好大受不了了 | 国产青草网 | 亚洲国产精品久久久久久久久 | 国产精品一区二区日韩 | 一区二区精品视频 | 成人午夜一区二区 | 嫩草影院在线观看网站成人 | 视频一区二区中文字幕 | 91精品国产乱码久久久久久久久 | 国产视频在线观看一区二区三区 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 毛片在线免费视频 | 一区二区三区国产在线 | 亚洲一区成人在线 | 国产一国产一级毛片视频在线 | 一区二区三区欧美在线观看 | 国产二区三区在线播放 | 极品大长腿啪啪高潮露脸 | 亚洲天堂在线电影 | 羞羞视频一区二区 | 一级电影免费 | 国产精品美女一区二区 | 色蜜桃av | 国产精品久久久久久238 | 毛片在线免费视频 | 欧美a∨一区二区三区久久黄 | 羞羞答答tv | 成人男女啪啪免费观看网站四虎 | 亚洲综人网 | 亚洲第一精品在线 | 国产午夜精品久久久久久免费视 | 国产孕妇孕交大片孕 | 日本人乱人乱亲乱色视频观看 | 在线看一区二区三区 | 日本高清在线免费 | 圆产精品久久久久久久久久久 | 少妇一级淫片免费放正片 | 狠狠干天天操 | 国产成年人网站 | 亚洲第一成网站 | 91久久国产露脸精品国产护士 |