亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Jfreechart總結

系統 1999 0
一:JFreeChart功能介紹
JFreeChart 目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求,主要包括如下幾個方面:
pie charts (2D and 3D) :餅圖(平面和立體)
bar charts (regular and stacked, with an optional 3D effect) :柱狀圖
line and area charts :曲線圖
scatter plots and bubble charts
time series, high/low/open/close charts and candle stick charts :時序圖
combination charts :復合圖
Pareto charts
Gantt charts :甘特圖
wind plots, meter charts and symbol charts
wafer map charts
( 態圖表,餅圖(二維和三維) , 柱狀圖 ( 水平,垂直),線圖,點圖,時間變化圖,甘特圖, 股票行情圖,混和圖, 溫度計圖, 刻度圖等常用商用圖表)
圖形可以導出成PNG和JPEG格式,同時還可以與PDF和EXCEL關聯
JFreeChart 核心類庫介紹:
研究jfreechart源碼發現源碼的主要由兩個大的包組成:org.jfree.chart,org.jfree.data。其中前者主要與圖形
本身有關,后者與圖形顯示的數據有關。具體研究如果大家有興趣的話可以自己研究 。
核心類主要有:
org.jfree.chart.JFreeChart :圖表對象,任何類型的圖表的最終表現形式都是在該對象進行一些屬性的定制。JFreeChart引擎本身提供了一個工廠類用于創建不同類型的圖表對象
org.jfree.data.category.XXXDataSet: 數據集對象,用于提供顯示圖表所用的數據。根據不同類型的圖表對應著很多類型的數據集對象類
org.jfree.chart.plot.XXXPlot :圖表區域對象,基本上這個對象決定著什么樣式的圖表,創建該對象的時候需要Axis、Renderer以及數據集對象的支持
org.jfree.chart.axis.XXXAxis :用于處理圖表的兩個軸:縱軸和橫軸
org.jfree.chart.render.XXXRender :負責如何顯示一個圖表對象
org.jfree.chart.urls.XXXURLGenerator: 用于生成Web圖表中每個項目的鼠標點擊鏈接
XXXXXToolTipGenerator: 用于生成圖象的幫助提示,不同類型圖表對應不同類型的工具提示類

個人感覺JFreeChart可以滿足大部分圖片創建的需要,美中不足的是:對字體的設置做的不夠好,特別是使用中文的時候字體很不清晰。因為這個原因建議你自己去修改他的源代碼,最好使用properties文件去設置字體.還有就是文檔要錢所以要多花點時間去看源代碼。或多上社區.

以下是一個簡單的Jfreechart Web項目:

web.xml:
    
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
<!-- for test jfreechar -->
  <servlet>
    <servlet-name>ChartServlet</servlet-name>
    <servlet-class>cn.netjava.jFreeChart.ChartServlet</servlet-class>
  </servlet>
	
<servlet-mapping>
  <servlet-name>ChartServlet</servlet-name>
  <url-pattern>/servlet/ChartServlet</url-pattern>
 </servlet-mapping>

  <welcome-file-list>
    <welcome-file>viewChart.jsp</welcome-file>
  </welcome-file-list>
</web-app>

  


viewChart.jsp 用于顯示圖
    
<%@page contentType="text/html" pageEncoding="GBK"%>
<title>jFreeChart圖表測試</title>
<br>請選擇要生成的圖表類型:
<hr>
<select id="scType" onchange="loadChartBySelectType(this)">
<option value="1">請選擇一種圖表</option>
<option value="PieChart3D">PieChart3D</option>
<option value="PieChart">PieChart</option>
<option value="BarChart3D">BarChart3D</option>
<option value="LineChart">LineChart</option>
<option value="RingChart">RingChart</option>
<option value="AreaChart">AreaChart</option>
<option value="WaterfallChart">WaterfallChart</option>
<option value="Thermometer">Thermometer</option>
<option value="MeterChart">MeterChart</option>
</select>
 <hr>
圖表:
<div id="displayChart" />
 
 <script type="text/javascript">
/**選擇jf圖表類型時,載入圖片*/
function loadChartBySelectType(sua) {
    var cType=sua.value;
    if(cType=="1"){
     return ;
    }
    alert("選中的是: "+cType)
     var disabledImageZone=document.getElementById("displayChart");
    //這樣多簡單,清理div中己有的東東:)
       disabledImageZone.innerHTML="";
      var image = document.createElement('img');
      image.setAttribute('id','imageZone');
      //提取服務器上的圖片顯示下來:
      image.setAttribute('src',"servlet/ChartServlet?chartType="+cType);
      disabledImageZone.appendChild(image);
      }
      </script>


  



后臺處理類:
    
package cn.netjava.jFreeChart;

import java.awt.BasicStroke;
import java.awt.Color;
import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.MeterPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ThermometerPlot;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.DefaultValueDataset;


/**
 * 生成jFreeChart圖片的Servlet
 * @author Eric.zhangh
 * Jan 8, 2011
 */
public class ChartServlet extends HttpServlet {
    /**
     * 根據客戶端請求的圖表類型chartType的值,返回對應的圖表,
     */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 輸出圖片格式為png格式
		response.setHeader("Cache-Control", "no-cache");
		response.setContentType("image/png");
		//請求的圖表類型
		String chartType = request.getParameter("chartType");
		System.out.println("請求的圖表類型是 : " + chartType);
		// for export Chart:
		JFreeChart chart = null;
		if (chartType.equalsIgnoreCase("PieChart3D")) {
			// 創建pie圖的數據集方法
			DefaultPieDataset data = ChartTools.getPieDataSet();
			chart = ChartFactory.createPieChart3D("這是PieChart3D圖:", data, true,
					false, false);
		} else if (chartType.equalsIgnoreCase("PieChart")) {
			// 創建pie圖的數據集方法
			DefaultPieDataset data = ChartTools.getPieDataSet();
			chart = ChartFactory.createPieChart("這是PieChart圖:", data, true,
					false, false);
		} else if (chartType.equalsIgnoreCase("RingChart")) {
			// 創建pie圖的數據集方法
			DefaultPieDataset data = ChartTools.getPieDataSet();
			chart = ChartFactory.createRingChart("這是RingChart圖:", data, true,
					false, false);
		} else if (chartType.equalsIgnoreCase("BarChart3D")) {
			// 創建bar圖的數據集方法
			DefaultCategoryDataset data = ChartTools.getCategoryDataset();
			// PlotOrientation.HORIZONTAL這個參數說明是水平還是垂直方向VERTICAL
			chart = ChartFactory.createBarChart3D("這是BarChart3D", "數量", "地點",
					data, PlotOrientation.VERTICAL, true, false, false);
		} else if (chartType.equalsIgnoreCase("LineChart")) {
			// 創建線圖
			DefaultCategoryDataset data = ChartTools.getCategoryDataset();
			chart = ChartFactory.createLineChart("這是LineChart", "數量", "地點",
					data, PlotOrientation.VERTICAL, true, false, false);
		} else if (chartType.equalsIgnoreCase("AreaChart")) {
			// 創建區域形圖
			DefaultCategoryDataset data = ChartTools.getCategoryDataset();
			chart = ChartFactory.createAreaChart("這是AreaChart", "數量", "地點",
					data, PlotOrientation.VERTICAL, true, false, false);
		} else if (chartType.equalsIgnoreCase("WaterfallChart")) {
			// 搞不明白這是什么圖:(
			DefaultCategoryDataset data = ChartTools.getCategoryDataset();
			chart = ChartFactory.createWaterfallChart("這是WaterfallChart", "數量",
					"地點", data, PlotOrientation.VERTICAL, true, false, false);
		} else if (chartType.equalsIgnoreCase("Thermometer")) {
			// 整個溫度計。。。。。。。。。。
			// 數據集,初始值為0
			DefaultValueDataset valuedataset = new DefaultValueDataset(0);
			// 創建漫度計的Plot對象
			ThermometerPlot thermometerplot = new ThermometerPlot(valuedataset);
			chart = new JFreeChart("設備溫度", JFreeChart.DEFAULT_TITLE_FONT,
					thermometerplot, false);
			thermometerplot.setThermometerStroke(new BasicStroke(2.0F));
			// 圖表的輪廓顏色
			thermometerplot.setThermometerPaint(Color.BLUE);
			thermometerplot.setOutlinePaint(null);
			// 圖表計數單位
			thermometerplot.setUnits(10);
			// 數值范圍
			thermometerplot.setRange(-40, 40);
			thermometerplot.setForegroundAlpha(1f);
			// 圖表的當前值
			valuedataset.setValue(20);
		} else if (chartType.equalsIgnoreCase("MeterChart")) {
			// 整個儀表盤
			// 數據集,初始值為30
			DefaultValueDataset valuedataset = new DefaultValueDataset(30);
			// 創建Plot對象
			MeterPlot meterplot = new MeterPlot(valuedataset);
			chart = new JFreeChart("當前流量速度", JFreeChart.DEFAULT_TITLE_FONT,
					meterplot, false);
			// 表盤上顯示的數據單位說明
			meterplot.setUnits("條/秒)");
			// 表盤分害的單位,即30為一格
			meterplot.setTickSize(30);
			// 顯示數據范圍,0~600
			meterplot.setRange(new Range(0, 600));
			// 圖表的當前值
			valuedataset.setValue(100);
		}
		if (null != chart) {
			// 將圖片對象輸出到客戶端
			java.io.OutputStream ous = response.getOutputStream();
			ChartUtilities.writeChartAsPNG(ous, chart, 500, 300);
			// 使用這樣的代碼輸出可能會出錯!
			// ChartUtilities.writeChartAsJPEG(ous,100,chart,500,300,null);
			ous.flush();
			ous.close();
			System.out.println("******ho ho..*****圖片輸出完畢....... " + chartType);
		}
	}
}


/**
 * 生成圖片數據集的工具類:
 * @author Eric.zhangh
 * Jan 8, 2011
 */
class ChartTools {
	/**
	 * 生成bar圖的數據集:
	 * @return:可用于Bar圖的數據集
	 */
	public static DefaultCategoryDataset getCategoryDataset() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		for (int series = 0; series < seriesTimes.length; series++) {
			for (int i = 0; i < seriesNames.length; i++) {
				nameValueOfTime[series][i] = new java.util.Random()
						.nextInt(300) + 100;
				dataset.addValue(nameValueOfTime[series][i], seriesNames[i],
						seriesTimes[series]);
			}
		}
		return dataset;
	}

	/**
	 * 創建用于填充pie圖的數據集
	 * @return DefaultPieDataset對象
	 */
	public static DefaultPieDataset getPieDataSet() {
		// 用來填充pie圖的數據集
		DefaultPieDataset dataset = new DefaultPieDataset();
		// 餅圖分塊名字
		String[] seriesNames = { "東方路", "南京路", "北京路", "大學路", };
		for (int i = 0; i < seriesNames.length; i++) {
			int value = new java.util.Random().nextInt(1000) + 500;
			// 設置pie數據集中的數據對
			dataset.setValue(seriesNames[i], value);
		}
		return dataset;
	}
  
	private ChartTools(){};
	/** X軸時間維數據序型(當然也可以為標簽維度)* */
	private static String[] seriesTimes = { "一月", "二月", "三月", "四月", "五月", "六月","七月" };
	/** 柱狀標簽序列(比如做為地點序列) */
	private static String[] seriesNames = { "南京東路", "北京東路", "浦東南路" };
	/** 每個時間點上每個地區/類型序列的值 */
	private static int[][] nameValueOfTime = new int[seriesTimes.length][seriesNames.length];
}


  


Jfreechart總結


Jfreechart總結

Jfreechart總結

Jfreechart總結


Jfreechart總結


Jfreechart總結

Jfreechart總結

Jfreechart總結


Jfreechart總結

Jfreechart總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99热这里只有精品首页精品 | 中文字幕精品在线观看 | 四小虎免费永久观看 | 成人网欧美亚洲影视图片 | 一级a爱片久久毛片 | 老妇激情毛片免费中国 | 欧美一区二区三区久久久人妖 | 一区二区三区免费视频 www | 久久伊人网站 | 精品久久久久久久久中文字幕 | 五月天婷婷在线视频国产在线 | 欧美精品xxxⅹ欧美 欧美精品成人 | 日本精品一区二区三区视频 | 久久最新 | 色婷婷色综合缴情在线 | 色综和| 成人免费午间影院在线观看 | 日韩欧美中文字幕一区二区三区 | 天天擦天天干 | 久艹在线观看视频 | 国产精品成人观看视频国产 | 一级a俄罗斯毛片免费 | 国产精选自拍 | 一区毛片| 九九在线观看免费视频 | 亚洲最大激情网 | 91精品国产91久久久久福利 | 亚欧在线视频 | 国产精品久久国产三级国电话系列 | 亚洲精品久久一区二区无卡 | 亚洲欧美日韩综合 | 亚洲国产精品日韩高清秒播 | 久久99精品久久久久久首页 | 色综合伊人色综合网亚洲欧洲 | 欧美日韩免费在线观看 | 中文字幕日韩精品中文区 | 一级毛片秋霞特色大片 | 国产成人欧美一区二区三区的 | 欧美一级亚洲一级 | 日韩精品成人免费观看 | 中文字幕日本不卡一二三区 |