MATLAB數據可視化[1]:geobubble

All comments and opinions expressed on Zhihu are mine alone and do not necessarily reflect those of my employers, past or present.

本文內容所有內容僅代表本人觀點,和Mathworks無關

不管你拿MATLAB來做什麼,相信很多用戶都會認同MATLAB的數據可視化非常方便。下面就簡單介紹下在新版2017b中引入的結合地理位置和數據的新函數geobubble。

老闆:myc,下周我要給神秘投資人做PPT了,快給我一份美國各州的GDP的圖。

myc:老闆稍等

準備數據

我們首先獲取美國各州的GDP(50州+DC特區)

geobubble需要知道經度和緯度的信息,我們可以用多種方式將州名轉化為經緯度。這裡我們選用MATLAB的Mapping Toolbox自帶的美國51州的數據和shaperead函數

usaState = shaperead(usastatelo);nallStates = {usaState.Name};ni = 1;nfor state = gdpTable.stateNamen idx = allStates==state;n lat(i) = usaState(idx).LabelLat;n lon(i) = usaState(idx).LabelLon;n i = i + 1;nendn% 更新tablengdpTable.Lat = lat;ngdpTable.Lon = lon;n

現在我們有了各州的gdp及經緯度,數據就準備好了

數據可視化

下面我們使用geobubble, myc指定了Lat和Lon兩列作為經緯度

geobubble(gdpTable,Lat,Lon)n

老闆:圖是不錯,只是好像沒有顯示出各州gdp的數據?

myc:Sorry,忘了告訴geobubble用什麼當作數據源了

map = geobubble(gdpTable,Lat,Lon,SizeVariable,gdp);n

老闆:嗯。。。意思到了,就是看不太清楚,沒有衝擊力

myc:沒問題,為了照顧老年人, geobubble返回的GeographicBubbleChart類支持調整泡泡的大小

map.BubbleWidthRange = [5,100]n

老闆:嗯,衝擊力有了,顏色有點單調

myc:(你想怎樣……)老闆,我們可以用顏色來表示另一維的數據

老闆:嗯,那我們把各州秋天的平均氣溫加上吧

myc:好(這到底是在要給誰做PPT)

myc匆忙地加入了新的ColorVariable

geobubble(gdpTable,Lat,Lon,SizeVariable,gdp,ColorVariable,FallTemp)n% MATLAB 報錯nExpected ColorData to be one of these types:nncategoricalnnInstead its type was double.n

myc:原來顏色需要是categorical類型,那就將各州分成「凍成狗」,「好舒服」,「熱成狗」 三個類吧

我們可以用discretize這個函數很方便地將數據進行分類(這裡用10.5oC和15oC作為分界)

tempZone = discretize(gdpTable.FallTemp,[-inf,10.5,15,inf],categorical,{cold,normal,hot});n% 更新tablengdpTable.zone = tempZone;nn% 更新mapnmap.SourceTable = gdpTable;nmap.ColorVariable = zone;n

老闆:不錯,沒想到這麼快就能將數據表現的既有衝擊力又五彩繽紛

myc:一般一般,不知道老闆你這又是要GDP又是要秋天平均氣溫,是想表達什麼?

老闆:最近氣溫驟降,我想給大家發點保暖用品。我想用這圖告訴投資人,我們在如此寒冷的條件下創造了這麼多GDP,是多麼不容易。

myc:老闆真是太善解人意了,不如讓投資人給大家發點顯卡暖暖腳吧。

老闆:想多了吧,我們的投資人。。。

是做秋褲的

祝大家??快樂,打好流感疫苗,注意保暖

~完~


推薦閱讀:

leaflet在線地圖進階寶典之——高級輔助特性
DataHunter:數據可視化,打通產業鏈最後一公里
我們為什麼要做數據可視化?數據可視化的真善美是什麼?
【深入淺出數據可視化 01】關於入門這件小事兒

TAG:MATLAB | 数据可视化 |