嚴(yán)蕊 貴陽(yáng)永青儀電科技有限公司
引言:數(shù)據(jù)可視化的概念一直處于不斷變化的過(guò)程,可視化是指把不可見(jiàn)的數(shù)據(jù)現(xiàn)象轉(zhuǎn)變成為可見(jiàn)的圖形現(xiàn)象,給一些錯(cuò)綜復(fù)雜、看起來(lái)毫無(wú)規(guī)律,沒(méi)辦法及時(shí)解釋和關(guān)聯(lián)的數(shù)據(jù)建立起聯(lián)系和關(guān)聯(lián),是我們能及時(shí)有效的發(fā)現(xiàn)數(shù)據(jù)的規(guī)律和特征。
將數(shù)據(jù)的可視化展現(xiàn)在人們常用的智能移動(dòng)設(shè)備上是一個(gè)很好的結(jié)合,既方便了能夠用戶隨時(shí)掏出手機(jī)工作,直接查看數(shù)據(jù)圖像從而對(duì)所需項(xiàng)目,進(jìn)行分析、規(guī)劃、調(diào)整等等操作。
本設(shè)計(jì)分為兩個(gè)模塊,分別為數(shù)據(jù)統(tǒng)計(jì)分析和數(shù)據(jù)可視化??傮w方案流程圖如圖1所示:
圖1 總體方案流程圖
SQLite,作為一款輕型的數(shù)據(jù)庫(kù),支持的操作系統(tǒng)非常多,包括Windows/Linux/Unix等等一些主流的操作系統(tǒng)。與此同時(shí),很多程序語(yǔ)言都能與之相結(jié)合,比如 Tcl、C#、PHP、Java等等常用的語(yǔ)言。
本設(shè)計(jì)采用基于Android操作平臺(tái)的移動(dòng)終端。移動(dòng)終端是近紅外指標(biāo)數(shù)據(jù)信息可視化界面的物理載體,它主要負(fù)責(zé)從本地存儲(chǔ)的SQLite數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)信息,移動(dòng)終端獲取數(shù)據(jù)后在觸摸屏上以一定的可視化方法進(jìn)行界面展示,并通過(guò)數(shù)據(jù)分析和處理展示,使用戶可以對(duì)指標(biāo)數(shù)據(jù)狀態(tài)一目了然,并對(duì)產(chǎn)品生產(chǎn)是的含量等數(shù)據(jù)進(jìn)行調(diào)整。
數(shù)據(jù)部分使用SQLite數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),存儲(chǔ)位置在移動(dòng)終端內(nèi)部SDCard中。可視化部分,使用Android Studio開(kāi)發(fā)工具搭建Android平臺(tái),利用第三方控件Achartengine實(shí)現(xiàn)以圖表的方式展現(xiàn)數(shù)據(jù)。
Achartengine是一個(gè)Android應(yīng)用的圖表庫(kù),是一個(gè)通用的第三方控件,支持一些常見(jiàn)的圖表,所有支持的圖表類型還可以包含多個(gè)系列,可以顯示與x軸水平(默認(rèn))或垂直和支持許多其他自定義功能。
(1)運(yùn)行機(jī)制:
Achartengine運(yùn)行每一個(gè)圖表都需要數(shù)據(jù)集(Dataset)和渲染集(Renderer),其中數(shù)據(jù)集由很多數(shù)據(jù)組成,渲染集由不相同的子渲染器組成。生成帶圖表的GraphicalView 或者 GraphicalActivity,需要通過(guò)圖表工廠 (ChartFactory) 去調(diào)用 數(shù)據(jù)集 (Dataset) 和渲染器集合 (Renderer)。
圖2 Achartengine運(yùn)行機(jī)制
(2)相關(guān)類與方法:
XYMultipleSeriesDataset(數(shù)據(jù)集,用來(lái)封裝所需要的數(shù)據(jù))、XYSeries (圖表數(shù)據(jù)集的其中一部分, 每個(gè)代表一個(gè)數(shù)據(jù)集合,比如說(shuō)折線, 一個(gè)圖表里面能夠包含多條折線, 所有的折線的數(shù)據(jù)放在一起就稱為數(shù)據(jù)集 XYMultipleSeriesDataset)、XYMultipleSeriesRenderer ( 渲染器的集合, 圖表里許多個(gè)曲線的渲染器)、XYSeriesRenderer (單條曲線或單元的渲染器, 舉個(gè)例子,一個(gè)圖表中可能存在多條曲線或者點(diǎn)等, 每條曲線或者每個(gè)點(diǎn)都需要一個(gè)渲染器, 所有的渲染器集合在一起就是渲染器集合XYMultipleSeriesRenderer)。
(3)渲染器:
它的作用是定義圖形的外觀樣式,如顏色、字體、線條、圖例樣式等等,API主要是Default Renderer(默認(rèn)渲染器)、簡(jiǎn)單渲染Simple Series Renderer及它的子類。
(4)數(shù)據(jù)填充器:
在創(chuàng)建圖表的時(shí)候需要的數(shù)據(jù)的集合,填充器的選擇要根據(jù)View決定,我們創(chuàng)建不同的View,需要的數(shù)據(jù)填充器是不一樣的,填充器類有許多,比如說(shuō)XY系列圖表數(shù)據(jù)填器XYMultipleSeriesDataset、日期/時(shí)間圖表填充器Time Series、餅圖數(shù)據(jù)填充器CategorySeries等等。
(5)圖表View:用于顯示具體的不同的圖表類型。
(1)平均值(average value):分為幾種形式的平均值,有算數(shù)平均值、幾何平均值、加權(quán)平均值等等。其中最普遍運(yùn)用的是算數(shù)平均值,由公式:
(2)標(biāo)準(zhǔn)偏差(Std Dev,Standard Deviation):作為反映數(shù)據(jù)分布的離散程度的標(biāo)準(zhǔn),用來(lái)衡量數(shù)據(jù)值偏離算數(shù)平均值的程度,從標(biāo)準(zhǔn)偏差的值來(lái)看,標(biāo)準(zhǔn)偏差越小,則表示這些值偏離算數(shù)平均值就越少,反之,標(biāo)準(zhǔn)偏差越大,這些值偏離算數(shù)平均值就越多。一般用σ表示標(biāo)準(zhǔn)偏差,它是方差的算術(shù)平方根。標(biāo)準(zhǔn)偏差有總體標(biāo)準(zhǔn)偏差和樣本標(biāo)準(zhǔn)偏差,本設(shè)計(jì)采用的是樣本標(biāo)準(zhǔn)偏差,由公式:
(3)變異系數(shù)(Coefficient of Variation):用來(lái)衡量數(shù)據(jù)集中值得變異程度的一個(gè)統(tǒng)計(jì)量。變異系數(shù)也有多種,包括全距系數(shù)、平均差系數(shù)、標(biāo)準(zhǔn)差系數(shù)等等。當(dāng)單位或平均值不同的時(shí)候,如果我們要比較其變異程度,就不能使用標(biāo)準(zhǔn)偏差,而必須要采用標(biāo)準(zhǔn)偏差與平均值的比來(lái)進(jìn)行比較。本設(shè)計(jì)采用標(biāo)準(zhǔn)差系數(shù)進(jìn)行分析,標(biāo)準(zhǔn)變異系數(shù)是指一組數(shù)據(jù)的變異指標(biāo)和它平均值的指標(biāo)的比值,通常用CV(Coefficieut of Variance)表示。變異系數(shù)的作用是反映單位均值上面的離散程度。一般用在總體平均值不相同的離散程度的比較上,當(dāng)總體的均值相同時(shí),就說(shuō)明比較標(biāo)準(zhǔn)差系數(shù)和比較標(biāo)準(zhǔn)差沒(méi)有區(qū)別,二者是等價(jià)的,由公式:
異常值指的是在一組測(cè)量值里面,測(cè)量值和平均值的偏差超過(guò)了兩倍標(biāo)準(zhǔn)差的值,其中超過(guò)了三倍標(biāo)準(zhǔn)差的值成為高度異常值,我們?cè)谔幚頂?shù)據(jù)的時(shí)候,一般排除掉高度異常值。本設(shè)計(jì)中采用的是格拉布斯準(zhǔn)測(cè)法(Grubbs)來(lái)實(shí)現(xiàn)對(duì)異常值得找出。我們使用貝塞爾公式求平均值的標(biāo)準(zhǔn)偏差(u表示殘差),由公式:
頻數(shù)直方圖中,y軸表示頻數(shù),由許多個(gè)寬與組距相等、面積用來(lái)表示頻數(shù)的長(zhǎng)方形組成的統(tǒng)計(jì)圖。它具有的特點(diǎn)是能清楚的顯示每個(gè)組頻數(shù)的分布情況,也能容易的顯示各個(gè)組之間頻數(shù)的差異。在運(yùn)用頻數(shù)直方圖前,我們需要明確幾個(gè)基本名詞的概念。首先是頻數(shù),我們?cè)趯?duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)記錄是可以發(fā)現(xiàn),數(shù)據(jù)有可能出現(xiàn)多次,出現(xiàn)的次數(shù)有多有少,也就是說(shuō)他們出現(xiàn)的頻繁程度各不相同,這時(shí)候,我們把每個(gè)數(shù)據(jù)出現(xiàn)的次數(shù)稱之為頻數(shù)。我們所選取的樣本個(gè)數(shù)比較多,把這些樣本分為數(shù)量相同的組,把組的個(gè)數(shù)成為組數(shù),每個(gè)組的兩個(gè)端點(diǎn)之間的距離叫做組距,在計(jì)算組距時(shí),我們要知道極差R,極差指的是一組數(shù)據(jù)中最大值L和最小是S的差,由公式:
做出頻數(shù)直方圖的方法不難,步驟如下:
a.找出數(shù)據(jù)的最大值L和最小值S,計(jì)算極差;
b.決定組數(shù),計(jì)算組距;
c.確定分點(diǎn);
d.列出頻數(shù)分布表;
e.畫出頻數(shù)直方圖。
首先從煙葉原煙近紅外光譜分析物聯(lián)網(wǎng)系統(tǒng)獲得關(guān)于煙草的近紅外指標(biāo)數(shù)據(jù)信息。我們進(jìn)入系統(tǒng)中的C類統(tǒng)計(jì)獲取數(shù)據(jù),C類基礎(chǔ)統(tǒng)計(jì)詳細(xì)的描述了當(dāng)前用戶有權(quán)限的單位在不同年份的樣品數(shù)量、等級(jí)數(shù)量、品種數(shù)量、省份、地州、市縣、站的數(shù)據(jù)量并進(jìn)行求和統(tǒng)計(jì),通過(guò)檢索、數(shù)據(jù)分析、導(dǎo)出等操作獲得可視化所需的近紅外指標(biāo)基礎(chǔ)數(shù)據(jù)源。
(1)縮放顯示圖表:用戶可通過(guò)兩指之間的手勢(shì)滑動(dòng)操作,使圖表實(shí)現(xiàn)放大與縮小功能。
(2)制定區(qū)間選取并顯示該放大區(qū)間圖表:用戶通過(guò)放大圖表,移動(dòng)圖表獲取自己想要獲取的圖表區(qū)間讀取數(shù)據(jù)信息。
(3)從圖上選點(diǎn),與數(shù)據(jù)關(guān)聯(lián)并顯示詳細(xì)數(shù)據(jù):當(dāng)用戶通過(guò)點(diǎn)擊數(shù)據(jù)圖表上的點(diǎn),獲得一個(gè)彈框,彈框內(nèi)將根據(jù)圖表特征顯示點(diǎn)或區(qū)間的坐標(biāo)和其他數(shù)據(jù)信息。
(1)差異分析:對(duì)不同地區(qū)、品種、等級(jí)的煙葉總糖、總氮、還原糖、煙堿、鉀、氯含量進(jìn)行分析,不同品種差異部分分析如表1 所示
表一 品種差異分析表
(2)排除數(shù)據(jù)異常值:由計(jì)算可得,標(biāo)準(zhǔn)偏差σ=0.371,所以3σ=1.113,同時(shí)由表所知, 的最大值為3.630,其中只有最大值3.630大于3σ,所以楚雄州煙草鉀含量的異常數(shù)據(jù)為3.630,通過(guò)渲染器等實(shí)現(xiàn)可視化。
(3)頻數(shù)直方圖:以昆明市的煙草總糖、總氮、還原糖、煙堿、鉀、氯含量為例,分別選取100個(gè)樣本數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,得出各個(gè)頻數(shù)分布表。昆明市2015年煙草總糖含量選取100個(gè)樣本數(shù)據(jù),分為9個(gè)組,組距為4。
結(jié)論:我們將分析結(jié)果中不同品種化學(xué)含量差異分析數(shù)據(jù)六項(xiàng)指標(biāo)進(jìn)行可視化,采用Achartengine第三方控件在Android工程下編寫程序,創(chuàng)建數(shù)據(jù)填充器填充數(shù)據(jù),創(chuàng)建渲染器對(duì)圖表的屬性進(jìn)行定義,最后獲取Intent對(duì)象,顯示圖表 View。