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】關於入門這件小事兒