【可视化】数据仓库与数据挖掘大作业
代碼下載鏈接:http://download.csdn.net/detail/jsgaobiao/9534463
?? 【概述】
本次大作業(yè)我們選取了第一個題目:基于統(tǒng)計方法的數(shù)據(jù)分布的圖形顯示。我們從各省市統(tǒng)計局公布的數(shù)據(jù)中搜集了包括人均GDP(元)、人口密度(人/平方公里)、PM2.5年平均濃度(微克/立方米)、年旅游收入(億元)的數(shù)據(jù)并且做了統(tǒng)計和可視化。
我們認(rèn)為這些數(shù)據(jù)可以一定程度上反映出一個省或直轄市的經(jīng)濟(人均GDP)、社會(人口密度)、環(huán)境(PM2.5年平均濃度)和文化產(chǎn)業(yè)(旅游收入)的發(fā)展水平。我們所呈現(xiàn)出來的兩張圖表也可以讓用戶直觀的從地理位置和對比中,了解省市間發(fā)展的差異性以及每個省市自身的發(fā)展結(jié)構(gòu),并且能夠輕松地尋找到用戶感興趣的區(qū)域。
下面我們將分步驟詳細地講述我們完成作業(yè)的流程以及其中涉及到的算法與技術(shù),也希望借這個報告記錄下我們學(xué)習(xí)和使用這些知識技能的過程。
?
?? 【數(shù)據(jù)的選取】
本次作業(yè)采用的數(shù)據(jù)來源于各省市統(tǒng)計局的公報,包含了各省市、自治區(qū)、特別行政區(qū)的人均GDP(元)、人口密度(人/平方公里)、PM2.5年平均濃度(微克/立方米)和年旅游收入(億元)。其中,澳門特別行政區(qū)和臺灣的PM2.5年平均濃度、年旅游收入,以及香港特別行政區(qū)的年旅游收入缺少官方數(shù)據(jù),因此我們采用了新聞報道中的統(tǒng)計數(shù)據(jù)用于研究。
為了嘗試不同組織方式的數(shù)據(jù)處理,我們使用了tsv和json兩種組織形式的數(shù)據(jù)文件用于兩種不同的可視化方案。其中tsv類型的數(shù)據(jù)文件中,所有的數(shù)據(jù)條目按照group(數(shù)據(jù)類型)、id(省份名稱)和value(數(shù)值)進行組織,而json文件中,每個數(shù)據(jù)對象表示了一個省份實體,當(dāng)中包括id(省份名稱)以及GDP、人口密度等不同屬性的數(shù)據(jù)。
?
?? 【數(shù)據(jù)可視化】
一、??????????環(huán)境與技術(shù)
本次作業(yè)的可視化采用了網(wǎng)頁端的實現(xiàn)方式,它具有跨平臺和輕便的特點。下面介紹了我們整個項目中涉及到的開發(fā)技術(shù):
l? 搭建HTTP本地服務(wù)器:我們希望用戶通過瀏覽器打開HTML文件直接查看可視化的結(jié)果,不過這樣有一些局限性。一旦我們需要從其他文件中加載數(shù)據(jù),由于瀏覽器內(nèi)建的安全機制,這樣的行為會受到限制。為了繞開這個安全機制,我們使用Python搭建一個本地的HTTP服務(wù)器,用該服務(wù)器來維護HTML頁面和數(shù)據(jù)文件,而不是直接從文件系統(tǒng)中加載。
本機采用了Python3.4.2的環(huán)境,只需要運行“python –m http.server”命令即可啟動一個HTTP服務(wù)器,默認(rèn)端口是8000.如果你采用了較老版本的Python,可以嘗試命令“python–m SimpleHTTPServer 8000”即可。
l? 網(wǎng)頁前端:HTML +CSS,這兩樣“利器”的搭配,可以讓我們方便的構(gòu)建出網(wǎng)站和各種可視化元素的樣式。
l? 數(shù)據(jù)可視化:D3.js,它是一個JavaScript庫,可以通過數(shù)據(jù)來操作文檔。D3可以通過使用HTML、SVG和CSS把數(shù)據(jù)鮮活形象地展現(xiàn)出來。D3嚴(yán)格遵循Web標(biāo)準(zhǔn),因而可以讓你的程序輕松兼容現(xiàn)代主流瀏覽器并避免對特定框架的依賴。同時,它提供了強大的可視化組件,可以讓使用者以數(shù)據(jù)驅(qū)動的方式去操作DOM。
二、??????????地圖的可視化
我們的第一部分可視化使用了地圖的形式,通過將各行政區(qū)域繪制深淺不同的顏色,表示各項數(shù)據(jù)的多少。通過選擇地圖下面的選項可以切換顯示不同的數(shù)據(jù)分布。
從這樣的圖中我們可以直觀的看出人均GDP和地理位置分布的關(guān)系,東部沿海省份的經(jīng)濟發(fā)展水平明顯好于中西部地區(qū)。重慶作為一個直轄市,在中部地區(qū)的確也屬于發(fā)展比較好的。另外,內(nèi)蒙古在這張地圖上顯得比較“獨樹一幟”,不過結(jié)合人口密度分布圖來看就可以發(fā)現(xiàn),內(nèi)蒙古因為人口密度特別低,所以人均GDP才會比較高。
再通過PM2.5的濃度圖和旅游收入的分布圖,我們還可以發(fā)現(xiàn),空氣污染較為嚴(yán)重的地區(qū)主要分布在以京津冀為核心的華北平原,比較符合我們?nèi)粘I钪械闹庇^感受,而新疆地區(qū)的PM2.5濃度也處于一個較高的水平,可能是因為土壤沙漠化的影響。
下面介紹具體的算法:
首先介紹一下地圖繪制的方式:我們采用了SVG(可縮放矢量圖形),它是W3C頒布的一種成熟標(biāo)準(zhǔn),用于規(guī)范網(wǎng)絡(luò)和移動平臺上的交互圖形。它能夠很好的與CSS、JavaScript等瀏覽器技術(shù)結(jié)合起來。SVG的圖像基于矢量而非像素,因此具有良好的伸縮性,使得它在任意尺寸下都不會丟失精度。
為了繪制中國地圖,我們采用了D3的線條生成器,事實上,它是使用svg:path元素實現(xiàn)的。我們在china.js中記錄下了所有省份區(qū)域邊界的頂點坐標(biāo),并通過創(chuàng)建的path元素對線條圍出的區(qū)域進行相應(yīng)顏色的填充,同時設(shè)置了與鼠標(biāo)事件的交互。當(dāng)用戶將鼠標(biāo)移動到某個省份區(qū)域之上時,會漸變地彈出提示框,標(biāo)明了省份名稱和具體的數(shù)據(jù)信息。
???????
?????? 為了使得數(shù)值的區(qū)域顯示不同深淺的顏色,我們先將數(shù)據(jù)進行了排序,然后根據(jù)排序的名字對colormap中的顏色進行插值。由于篇幅限制,此處就不附上代碼了。具體可以參考index.html中的注釋。
?
三、??????????條形圖可視化
為了讓數(shù)據(jù)的呈現(xiàn)更加多樣化,并讓用戶可以方便地比較地區(qū)間的差異性,我們除了第一部分的地圖可視化之外,還做了條形圖的可視化。這一部分呈現(xiàn)了按照各個領(lǐng)域數(shù)據(jù)排名為標(biāo)準(zhǔn)進行度量的條形圖。
為了方便比較,我們設(shè)置了Multiples和Stacked兩種顯示方式,分別可以方便用戶比較單項指標(biāo)之間的差異和整體指標(biāo)的差異程度。
可視化界面的下方有兩排選擇按鈕,其中第一排選擇按鈕可以選擇可視化的方式是Multiples(上圖)或者Stacked(下圖)。第二排選擇按鈕則可以選擇顯示哪些數(shù)值的項目。
條形圖的可視化中,每個條形的高度與這個省份某個數(shù)值的排名成正比。我們選擇通過排名而不是具體的數(shù)值(如GDP)進行可視化是因為不同屬性間的數(shù)值差異可能很大。例如GDP的數(shù)值幾乎都在萬或者十萬的量級,而PM2.5的年平均濃度都在100以內(nèi)。為了在可視化中較好的體現(xiàn)出每個省份各種屬性所占的“比重”,以及避免某些省份在某個屬性的數(shù)值過高而導(dǎo)致其他省份的差異難以呈現(xiàn),所以我們選擇了按照各個屬性的排名進行可視化。
從這樣的圖中可以看出一個地區(qū)包括了經(jīng)濟(人均GDP)、社會(人口密度)、環(huán)境(PM2.5年平均濃度)和文化產(chǎn)業(yè)(旅游收入)的整體社會發(fā)展水平。其中,北京、江蘇、上海三地位列前三,而西藏、甘肅兩地的發(fā)展則比較滯后。
除此以外,通過比較各個顏色在一個省份條形圖中所占的比例,也可以看出一些特征。例如,條形圖高度接近的廣東和遼寧,他們各項指數(shù)比例差異主要體現(xiàn)在廣東的旅游收入(綠色)較高,人口較多(紅色),而遼寧的PM2.5年平均濃度(灰色)占了更大的比例。這一現(xiàn)象體現(xiàn)出了遼寧是以高污染的重工業(yè)為主的發(fā)展模式,而廣東的發(fā)展模式則更加的“環(huán)境友好”。
?? 【結(jié)語】
通過上述的說明以及截圖,我們可以發(fā)現(xiàn)這些數(shù)據(jù)都被直觀地呈現(xiàn)出來。到目前為止,我們已經(jīng)生活在大數(shù)據(jù)的包圍之中,然而大量的數(shù)據(jù)難以被人們所理解,想要迅速地提取數(shù)據(jù)中的重要信息、洞悉數(shù)據(jù)中所蘊含的趨勢,數(shù)據(jù)可視化必不可少。
這次的作業(yè)是我們第一次對數(shù)據(jù)可視化進行較為系統(tǒng)的學(xué)習(xí)和使用,讓我們習(xí)得了很多新的技能,也讓我們更清楚的認(rèn)識到數(shù)據(jù)可視化的強大之處。當(dāng)我們所寫的代碼將大量的數(shù)據(jù)繪制成漂亮的圖像時,我們覺得數(shù)據(jù)可視化不僅僅是一門科學(xué),也是一門藝術(shù)。
總結(jié)
以上是生活随笔為你收集整理的【可视化】数据仓库与数据挖掘大作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《软件工程导论》第一章
- 下一篇: tomcat启动报错“The proce