1. 程式人生 > >【程式設計師眼中的統計學(1)】資訊圖形化:第一印象

【程式設計師眼中的統計學(1)】資訊圖形化:第一印象

package pictuer;
import java.awt.Dimension;
import java.awt.Font;
import java.io.PrintStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickMarkPosition;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.*;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class XYBarChartDemo1 extends ApplicationFrame
{
	/**
	 * 建構函式,用來建立面板用來存放圖片
	 * @param s 表示面板的名稱
	 */
	public XYBarChartDemo1(String s)
	{
		super(s);
		JPanel jpanel = createDemoPanel();//jpanel  建立面板的名稱
		jpanel.setPreferredSize(new Dimension(500, 270));
		setContentPane(jpanel);
	}
	/**
	 * 建立條形圖
	 * @param intervalxydataset  數週資料生成變數,用來存放數軸資料
	 * @return 返回條形圖
	 */
	private static JFreeChart createChart(IntervalXYDataset intervalxydataset,String Pictuer_name)
	{
		//System.out.println("請輸入該圖片的名稱(型別是String):");
		//Scanner input = new Scanner(System.in);//input 輸入流變數,存放從鍵盤輸入的字串
		//String Pictuer_name=input.nextLine();//Pictuer_name 字串變數,用來存放條形圖的名稱
		JFreeChart jfreechart = ChartFactory.createXYBarChart(Pictuer_name, "Year", true, "Number of People", intervalxydataset, PlotOrientation.VERTICAL, true, false, false);
		//jfreechart  圖形變數,用來裝載圖形
		XYPlot xyplot = (XYPlot)jfreechart.getPlot();//xyplot  數軸變數,用來存放和設定數軸的資訊
		XYBarRenderer xybarrenderer = (XYBarRenderer)xyplot.getRenderer();//xybarrenderer  圖形方塊變數
		StandardXYToolTipGenerator standardxytooltipgenerator = new StandardXYToolTipGenerator("{1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0"));
		//standardxytooltipgenerator 數週資料生成變數,用來存放數軸資料
		xybarrenderer.setBaseToolTipGenerator(standardxytooltipgenerator);
		xybarrenderer.setMargin(0.10000000000000001D);
		DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis();//dateaxis 數值變數,用來設定數軸的數值的 
		dateaxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
		dateaxis.setLowerMargin(0.01D);
		dateaxis.setUpperMargin(0.01D);
		ChartUtilities.applyCurrentTheme(jfreechart);
		return jfreechart;
	}
	/**
	 * 獲得繪製條形圖所需的資料
	 * @return 繪製條形圖所需的資料集
	 */
	private static IntervalXYDataset createDataset()
	{
		List<Integer> list_name=new ArrayList<Integer>();//list_name 裝載直方圖各小塊區間的容器
		list_name.add(1);
		list_name.add(2);
		list_name.add(3);
		list_name.add(4);
		list_name.add(5);
		int n=5;
		TimeSeries timeseries = new TimeSeries("Executions", "Year", "Count");//timeseries  時間變數,存放資料時間的
		List<Integer> li_name=list_name;//li_name 存放條形圖各小塊區間的容器
		List<Double> list_size=new ArrayList<Double>();//list_size 裝載條形圖各小塊頻數的容器
		list_size.add(23.0);
		list_size.add(13.0);
		list_size.add(25.0);
		list_size.add(12.0);
		list_size.add(18.0);
		List<Double> li_size=list_size;//li_size 存放條形圖各區間頻數的容器
		for(int i=0;i<n;i++){
		try
		{
			timeseries.add(new Year(li_name.get(i)), new Double(li_size.get(i)));
		}
		catch (Exception exception)
		{
			System.err.println(exception.getMessage());
		}//拋異常
		}
		TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeseries);//timeseriescollection  時間數集變數
		return timeseriescollection;
	}
	/**
	 * 得到條形圖各小塊的個數
	 * @return 直方圖各小塊的個數
	 */
	/**
	 * 設定條形圖各小塊的個數
	 * @return 直方圖各小塊的個數
	 */
	/**
	 * 建立條形圖面板
	 * @param ChartPanel 圖形面板變數
	 * @return 返回直方圖面板
	 */
	public static JPanel createDemoPanel()
	{
		String Pictuer_name;
		Pictuer_name="Chart";
		return new ChartPanel(createChart(createDataset(),Pictuer_name));
	}

	public static void main(String args[])
	{
		/**
		 * 繪製條形圖
		 * @author cuit
		 * @return 返回直方圖
		 */
		String panel_name;
		panel_name="My Chart";
		XYBarChartDemo1 xybarchartdemo1 = new XYBarChartDemo1(panel_name);//xybarchartdemo1   構造方法例項變數
		xybarchartdemo1.pack();
		RefineryUtilities.centerFrameOnScreen(xybarchartdemo1);
		xybarchartdemo1.setVisible(true);
	}
}

相關推薦

程式設計師眼中統計學1資訊圖形第一印象

package pictuer; import java.awt.Dimension; import java.awt.Font; import java.io.PrintStream; import java.text.DecimalFormat; import java.text.Simpl

程式設計師眼中統計學12相關與迴歸我的線條如何?

作者 白寧超 2015年10月25日22:16:07 摘要:程式設計師眼中的統計學系列是作者和團隊共同學習筆記的整理。首先提到統計學,很多人認為是經濟學或者數學的專利,與計算機並沒有交集。誠然在傳統學科中,其在以上學科發揮作用很大。然而隨著科學技術的發展和機器智慧的普及,統計學在機器智慧中的作用越來

程式設計師眼中統計學2集中趨勢度量分散性、變異性、強大的距

// 用於統計輸入了多少資料 static int n = 0; static String a1[]; static int b1[]; /** * @Title: set * @Description: 資料賦值 *

程式設計師學習資料1—附下載地址,持續更新

ant學習資料 ant.pdf 連結:http://pan.baidu.com/s/1nuFZs5z 密碼:1efcDHTML網頁製作完全手冊.chm 連結:http://pan.baidu.com/s/1slhB36t 密碼:67zkdom4j資料大全 dom4j.zip 連結:http://pan.b

程式設計師生存定律-六個程式設計師的故事1

程式設計師生存定律這系列的目錄在這裡:程式設計師生存定律--目錄喜歡從頭瞄的,可以移步。-------------------------------------------------------------------------------此前的章節基本上是在分析並試圖

程式設計師刷題1反轉三位數python

程式設計師常用刷題(1)反轉一個三位數 class Solution: “”" @param number: A 3-digit number. @return: Reversed number. “”" def reverseInteger(self, num

程式設計師笑話系列1

  碼程式碼太累了?快來看看程式設計師笑話開心一下吧!據說愛笑的人碼程式碼會更快哦! No.1              “咚咚咚!”           “誰?”            過了很久……           “java……” No.2          一個

c# 程式設計師學習android1引導介面--viewpager的使用

本次之前說一下android開發工具。android開發工具有2種,一種是eclipse 一個是谷歌android-studio-bundle 前者需要配置,後者不需要。會自動下載sdk。配置方法我就不說了。有幾個注意的地方說一下。eclipse 適合32位windows系

深入Java虛擬機1Java內存區域與內存溢出

count 遇到 leak 分析 對象類型 深度 分配內存 解釋執行 尋址 內存區域 Java虛擬機在執行Java程序的過程中會把他所管理的內存劃分為若幹個不同的數據區域。Java虛擬機規範將JVM所管理的內存分為以下幾個運行時數據區:程序計數器、Java虛擬機棧、本地方法

phaser.js學習筆記1使用phaser.js製作遊戲

phaser.js是一款開源的HTML5遊戲框架,GitHub主頁上star超過了2萬。phaser.js支援使用JavaScript或TypeScript編寫遊戲,支援WebGL和Canvas渲染並可藉助第三方工具編譯成iOS,Android原生程式。phaser.js有兩

深入Java虛擬機器1Java記憶體區域與記憶體溢位

記憶體區域 Java虛擬機器在執行Java程式的過程中會把他所管理的記憶體劃分為若干個不同的資料區域。Java虛擬機器規範將JVM所管理的記憶體分為以下幾個執行時資料區:程式計數器、Java虛擬機器棧、本地方法棧、Java堆、方法區。下面詳細闡述各資料區所儲存的

CUDA並行程式設計系列1GPU技術簡介

前言 CUDA並行程式設計系列是本人在學習CUDA時整理的資料,內容大都來源於對《CUDA並行程式設計:GPU程式設計指南》、《GPU高效能程式設計CUDA實戰》和CUDA Toolkit Documentation的整理。通過本系列整體介紹CUDA並行程式設

Unity3D5.6版本使用1自定義編輯器獲取場景所有物件Tag生成Json

在unity3D5.x版本中,一部分以前的程式碼無法正常執行,比如:載入場景時,使用Application.loadedLevel會提示“已過時”,需要使用EditorSceneManager.OpenScene(FileName[scount]);所以寫一篇記

程式設計師眼中統計學6.1原創實現幾何分佈演算法以及應用

作者 白寧超 2015年8月14日16:07:23 摘要:本文繼統計學幾何分佈、二項分佈、泊松分佈研究的深入,基於各種分佈基礎概念和核心知識介紹之後。就各種分佈的實現和真實環境下應用方是目的。本文就演算法文件規範和程式碼註釋進行梳理,利用其基本核心演算法,實現我們要達到的目的。大家通用的一些統計

程式設計師眼中統計學7正態分佈的運用正態之美

作者 白寧超 2015年10月15日18:30:07 摘要:程式設計師眼中的統計學系列是作者和團隊共同學習筆記的整理。首先提到統計學,很多人認為是經濟學或者數學的專利,與計算機並沒有交集。誠然在傳統學科中,其在以上學科發揮作用很大。然而隨著科學技術的發展和機器智慧的普及,統計學在機器智慧中的作用越來

程式設計師眼中統計學8統計抽樣的運用抽取樣本

作者 白寧超 2015年10月15日18:30:07 摘要:程式設計師眼中的統計學系列是作者和團隊共同學習筆記的整理。首先提到統計學,很多人認為是經濟學或者數學的專利,與計算機並沒有交集。誠然在傳統學科中,其在以上學科發揮作用很大。然而隨著科學技術的發展和機器智慧的普及,統計學在機器智慧中的作用越來

程式設計師眼中統計學6幾何分佈、二項分佈及泊松分佈堅持離散

/** * 在n次伯努利試驗中,試驗r次才得到第一次成功的機率 P(X=r)=pq^{r-1} * @param p double型保留一位小數,表示成功的概率 * @param q double型保留一位小數,表示失敗的概率即1-p * @param r 整型,實驗次數 *

程式設計師眼中統計學6.2原創實現二項分佈演算法以及應用

package DistTools; /** * * @(#)GeoDist.java * @Description:描述:本演算法中在n次伯努利試驗中:試驗n次得到r次成功的概率、二項分佈的期望、二項分佈方差的具體實現。 * @Definitions:定義:在相互獨立事件中

程式設計師眼中統計學5排列組合排序、排位、排

/** * 獲取無重線排列總數目 * 描述:從n個元數中選取m個元數進行全排列,得出一共有多少種排法 * 公式:A(m,n)=m!/(n-m)! * 優缺點:輸入資料必須互不相同。求階乘時,使用了for迴圈,避免了遞迴方法導致記憶體溢位的風險。

程式設計師眼中統計學11卡方分佈的應用

作者 白寧超 2015年8月9日22:33:00 摘要:程式設計師眼中的統計學系列是作者和團隊共同學習筆記的整理。首先提到統計學,很多人認為是經濟學或者數學的專利,與計算機並沒有交集。誠然在傳統學科中,其在以上學科發揮作用很大。然而隨著科學技術的發展和機器智慧的普及,統計學在機器智慧中的作用越