嚴蕊 貴陽永青儀電科技有限公司
引言:數據可視化的概念一直處于不斷變化的過程,可視化是指把不可見的數據現象轉變成為可見的圖形現象,給一些錯綜復雜、看起來毫無規律,沒辦法及時解釋和關聯的數據建立起聯系和關聯,是我們能及時有效的發現數據的規律和特征。
將數據的可視化展現在人們常用的智能移動設備上是一個很好的結合,既方便了能夠用戶隨時掏出手機工作,直接查看數據圖像從而對所需項目,進行分析、規劃、調整等等操作。
本設計分為兩個模塊,分別為數據統計分析和數據可視化??傮w方案流程圖如圖1所示:

圖1 總體方案流程圖
SQLite,作為一款輕型的數據庫,支持的操作系統非常多,包括Windows/Linux/Unix等等一些主流的操作系統。與此同時,很多程序語言都能與之相結合,比如 Tcl、C#、PHP、Java等等常用的語言。
本設計采用基于Android操作平臺的移動終端。移動終端是近紅外指標數據信息可視化界面的物理載體,它主要負責從本地存儲的SQLite數據庫中獲取數據信息,移動終端獲取數據后在觸摸屏上以一定的可視化方法進行界面展示,并通過數據分析和處理展示,使用戶可以對指標數據狀態一目了然,并對產品生產是的含量等數據進行調整。
數據部分使用SQLite數據庫進行存儲,存儲位置在移動終端內部SDCard中??梢暬糠?,使用Android Studio開發工具搭建Android平臺,利用第三方控件Achartengine實現以圖表的方式展現數據。
Achartengine是一個Android應用的圖表庫,是一個通用的第三方控件,支持一些常見的圖表,所有支持的圖表類型還可以包含多個系列,可以顯示與x軸水平(默認)或垂直和支持許多其他自定義功能。
(1)運行機制:
Achartengine運行每一個圖表都需要數據集(Dataset)和渲染集(Renderer),其中數據集由很多數據組成,渲染集由不相同的子渲染器組成。生成帶圖表的GraphicalView 或者 GraphicalActivity,需要通過圖表工廠 (ChartFactory) 去調用 數據集 (Dataset) 和渲染器集合 (Renderer)。

圖2 Achartengine運行機制
(2)相關類與方法:
XYMultipleSeriesDataset(數據集,用來封裝所需要的數據)、XYSeries (圖表數據集的其中一部分, 每個代表一個數據集合,比如說折線, 一個圖表里面能夠包含多條折線, 所有的折線的數據放在一起就稱為數據集 XYMultipleSeriesDataset)、XYMultipleSeriesRenderer ( 渲染器的集合, 圖表里許多個曲線的渲染器)、XYSeriesRenderer (單條曲線或單元的渲染器, 舉個例子,一個圖表中可能存在多條曲線或者點等, 每條曲線或者每個點都需要一個渲染器, 所有的渲染器集合在一起就是渲染器集合XYMultipleSeriesRenderer)。
(3)渲染器:
它的作用是定義圖形的外觀樣式,如顏色、字體、線條、圖例樣式等等,API主要是Default Renderer(默認渲染器)、簡單渲染Simple Series Renderer及它的子類。
(4)數據填充器:
在創建圖表的時候需要的數據的集合,填充器的選擇要根據View決定,我們創建不同的View,需要的數據填充器是不一樣的,填充器類有許多,比如說XY系列圖表數據填器XYMultipleSeriesDataset、日期/時間圖表填充器Time Series、餅圖數據填充器CategorySeries等等。
(5)圖表View:用于顯示具體的不同的圖表類型。
(1)平均值(average value):分為幾種形式的平均值,有算數平均值、幾何平均值、加權平均值等等。其中最普遍運用的是算數平均值,由公式:

(2)標準偏差(Std Dev,Standard Deviation):作為反映數據分布的離散程度的標準,用來衡量數據值偏離算數平均值的程度,從標準偏差的值來看,標準偏差越小,則表示這些值偏離算數平均值就越少,反之,標準偏差越大,這些值偏離算數平均值就越多。一般用σ表示標準偏差,它是方差的算術平方根。標準偏差有總體標準偏差和樣本標準偏差,本設計采用的是樣本標準偏差,由公式:

(3)變異系數(Coefficient of Variation):用來衡量數據集中值得變異程度的一個統計量。變異系數也有多種,包括全距系數、平均差系數、標準差系數等等。當單位或平均值不同的時候,如果我們要比較其變異程度,就不能使用標準偏差,而必須要采用標準偏差與平均值的比來進行比較。本設計采用標準差系數進行分析,標準變異系數是指一組數據的變異指標和它平均值的指標的比值,通常用CV(Coefficieut of Variance)表示。變異系數的作用是反映單位均值上面的離散程度。一般用在總體平均值不相同的離散程度的比較上,當總體的均值相同時,就說明比較標準差系數和比較標準差沒有區別,二者是等價的,由公式:

異常值指的是在一組測量值里面,測量值和平均值的偏差超過了兩倍標準差的值,其中超過了三倍標準差的值成為高度異常值,我們在處理數據的時候,一般排除掉高度異常值。本設計中采用的是格拉布斯準測法(Grubbs)來實現對異常值得找出。我們使用貝塞爾公式求平均值的標準偏差(u表示殘差),由公式:

頻數直方圖中,y軸表示頻數,由許多個寬與組距相等、面積用來表示頻數的長方形組成的統計圖。它具有的特點是能清楚的顯示每個組頻數的分布情況,也能容易的顯示各個組之間頻數的差異。在運用頻數直方圖前,我們需要明確幾個基本名詞的概念。首先是頻數,我們在對數據進行統計記錄是可以發現,數據有可能出現多次,出現的次數有多有少,也就是說他們出現的頻繁程度各不相同,這時候,我們把每個數據出現的次數稱之為頻數。我們所選取的樣本個數比較多,把這些樣本分為數量相同的組,把組的個數成為組數,每個組的兩個端點之間的距離叫做組距,在計算組距時,我們要知道極差R,極差指的是一組數據中最大值L和最小是S的差,由公式:

做出頻數直方圖的方法不難,步驟如下:
a.找出數據的最大值L和最小值S,計算極差;
b.決定組數,計算組距;
c.確定分點;
d.列出頻數分布表;
e.畫出頻數直方圖。
首先從煙葉原煙近紅外光譜分析物聯網系統獲得關于煙草的近紅外指標數據信息。我們進入系統中的C類統計獲取數據,C類基礎統計詳細的描述了當前用戶有權限的單位在不同年份的樣品數量、等級數量、品種數量、省份、地州、市縣、站的數據量并進行求和統計,通過檢索、數據分析、導出等操作獲得可視化所需的近紅外指標基礎數據源。
(1)縮放顯示圖表:用戶可通過兩指之間的手勢滑動操作,使圖表實現放大與縮小功能。
(2)制定區間選取并顯示該放大區間圖表:用戶通過放大圖表,移動圖表獲取自己想要獲取的圖表區間讀取數據信息。
(3)從圖上選點,與數據關聯并顯示詳細數據:當用戶通過點擊數據圖表上的點,獲得一個彈框,彈框內將根據圖表特征顯示點或區間的坐標和其他數據信息。
(1)差異分析:對不同地區、品種、等級的煙葉總糖、總氮、還原糖、煙堿、鉀、氯含量進行分析,不同品種差異部分分析如表1 所示

表一 品種差異分析表
(2)排除數據異常值:由計算可得,標準偏差σ=0.371,所以3σ=1.113,同時由表所知, 的最大值為3.630,其中只有最大值3.630大于3σ,所以楚雄州煙草鉀含量的異常數據為3.630,通過渲染器等實現可視化。
(3)頻數直方圖:以昆明市的煙草總糖、總氮、還原糖、煙堿、鉀、氯含量為例,分別選取100個樣本數據進行統計分析,得出各個頻數分布表。昆明市2015年煙草總糖含量選取100個樣本數據,分為9個組,組距為4。
結論:我們將分析結果中不同品種化學含量差異分析數據六項指標進行可視化,采用Achartengine第三方控件在Android工程下編寫程序,創建數據填充器填充數據,創建渲染器對圖表的屬性進行定義,最后獲取Intent對象,顯示圖表 View。