Liz's Blog

Python學習筆記#9:Plotly (choropleth)地圖資料視覺化篇

| Comments

這幾年國外新聞將地圖資料結合視覺化資訊做得越來越好,看新聞常有真的很會的感覺。這篇choropleth延續之前學到的plotly,有比較多要注意的參數,但基本概念就是go.Figure(data+layout),再用iplot畫出來,多練習幾次就會上手。如果有美國各州統計數據,跑這個圖真的很適合講很多資訊。

Udemy
課程名稱:Python for Data Science and Machine Learning Bootcamp
講師:Jose Portilla

1.載入套件,準備離線用設定(圖表會儲存在自己的主機環境)

import plotly.plotly as py
import plotly.graph_objs as go 
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

2.設定圖表會出現在jupyter notebook上

init_notebook_mode(connected=True) 

3.美國地理分佈圖(Choropleth US Maps)
開始會有好幾個參數要輸入,可以配合cheat sheet服用,不懂的參數內容可以在這裡搜尋,多練習幾次就會習慣。先利用dict()來設定data dictionary,包含:
type='choropleth',
locations=[all listed states],(和後面locationmode有關)
locationmode='USA-states',(預設為ISO-3,其他選項包含USA-states及country names)
colorscale='',(內建有'pairs'、'Greys'、'Greens'、'Bluered'、 'Hot'、'Picnic'、'Portland'、'Jet'、'RdBu'、'Blackbody'、'Earth'、 'Electric'、'YIOrRd'、'YIGnBu'或者可自訂
text=[],(可顯示每個點想顯示的文字)
z=[],(z軸的值或稱每個點的數值)
colorbar={'colorbar的標題'}

再設定layout:
layout = dict(geo={'scope':'usa'})

最後用choromap = go.Figure(data,layout)組合成iplot所需的資料。

data = dict(type='choropleth',
           locations = ['AZ','CA','NY'],
           locationmode = 'USA-states',
           colorscale = 'Greens',
           text = ['Arizona','California','New York'],
           z = [1.0,2.0,3.0],
           colorbar = {'title':'Colorbar Title Goes Here'})
           
layout = dict(geo={'scope':'usa'})
choromap = go.Figure(data = [data],layout = layout)
iplot(choromap)

(2)World Choropleth Map
和美國地理分佈差不多,但多一些layout要設定。

df = pd.read_csv('2014_World_GDP')
df.head()

data = dict(type = 'choropleth',
           locations = df['CODE'],
           z = df['GDP (BILLIONS)'],
           text = df['COUNTRY'],
           colorbar = {'title' : 'GDP Billions US'}) 

#showframe=F代表地圖沒有外框。projection設定世界地圖投影法,常用mercator。
layout = dict(title = '2014 Global GDP',
             geo = dict(showframe = False,projection = {'type':'mercator'}))
             
choromap3 = go.Figure(data = [data],layout = layout)
iplot(choromap3)

Comments

comments powered by Disqus