Plotly 等值線圖
本教程將討論在 Python 中使用 Plotly 的 choropleth()
函式建立等值線圖。
在 Python 中使用 Plotly 的 choropleth()
函式建立等值線圖
等值線圖是將資料表示為彩色多邊形的地圖。它用於繪製具有不同顏色的國家和州的地圖。
我們可以使用 plotly.express
的 choropleth()
函式來建立等值線圖。要建立繪圖,我們必須在 choropleth()
函式內傳遞一個包含幾何資訊的 DataFrame 和一個我們想在地圖上顯示的特徵列表。
例如,我們可以使用世界地圖的內建資料來繪製一個像世界地圖一樣的簡單地圖,並突出顯示美國德克薩斯州。請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(locationmode="USA-states", locations=["TX"])
fig.show()
輸出:
德克薩斯州在上圖中以藍色突出顯示,但我們看不到它。我們可以使用 scope
引數顯示像美國這樣的部分,而不是顯示整個地圖。
範圍引數可以設定為世界、usa
、europe
、asia
、africa
、north
和 south america
。例如,讓我們只顯示美國地圖,突出顯示兩個州並使用 color
引數給它們不同的顏色。
請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="USA-states", locations=["TX", "NY"], scope="usa", color=[1, 2]
)
fig.show()
輸出:
我們也可以使用中心點的經緯度來設定地圖的中心。要設定地圖的中心點,我們必須在 center
引數中傳遞緯度和經度。
例如,讓我們將地圖的中心點設定為德克薩斯。請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="USA-states",
locations=["TX", "NY"],
color=[1, 2],
center=dict(lat=32, lon=-109.9),
)
fig.show()
輸出:
要將直方圖轉換為在每個子圖中包含單個 bin 的一組子圖,我們可以將 facet_row
用於行,將 facet_col
用於列,並將其值設定為用於設定名稱的整數或字串列表子圖。
我們還可以使用 facet_row_spacing
和 facet_col_spacing
引數更改每個子圖之間的間距,並將其值設定為從 0 到 1 的浮點數。我們可以使用 title
引數為直方圖指定標題。
我們可以使用 width
和 height
引數設定繪圖的寬度和高度。我們可以將 fitbounds
屬性設定為 locations
以僅在地圖上顯示位置。
我們還可以使用 basemap_visible
引數隱藏基本地圖並將其設定為 false。
例如,讓我們更改上面提到的屬性。請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="USA-states",
locations=["TX", "NY"],
color=["TX", "NY"],
scope="usa",
facet_col=[1, 2],
title="Choropleth Map",
fitbounds="locations",
basemap_visible=False,
)
fig.show()
輸出:
我們可以使用 color_discrete_sequence
引數更改預設顏色序列。我們可以將顏色序列設定為 Plotly 支援的顏色序列,如 Dark24
或 Light24
。
例如,讓我們更改上圖的顏色順序。請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="USA-states",
locations=["TX", "NY"],
color=["TX", "NY"],
scope="usa",
facet_col=[1, 2],
title="Choropleth Map",
fitbounds="locations",
basemap_visible=False,
color_discrete_sequence=px.colors.qualitative.Light24,
)
fig.show()
輸出:
除了使用顏色序列,我們還可以使用 color_discrete_map
引數為每個位置賦予任何顏色。此引數用於覆蓋預設顏色。
如果我們只改變幾個位置,其餘的將從顏色序列中分配。例如,讓我們將第一個位置顏色更改為黃色。
請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="USA-states",
locations=["TX", "NY"],
color=["TX", "NY"],
scope="usa",
facet_col=[1, 2],
title="Choropleth Map",
fitbounds="locations",
basemap_visible=False,
color_discrete_sequence=px.colors.qualitative.Light24,
color_discrete_map={"TX": "yellow"},
)
fig.show()
輸出:
除了使用州作為位置,我們還可以通過將 locationmode
引數設定為國家名稱並在 locations
引數中傳遞國家名稱以在圖中突出顯示它來使用不同的國家名稱。
例如,讓我們重點介紹兩個亞洲國家。請參閱下面的程式碼。
import plotly.express as px
fig = px.choropleth(
locationmode="country names",
locations=["Pakistan", "India"],
color=["Pakistan", "India"],
scope="asia",
)
fig.show()
輸出:
我們還可以使用資料框來建立等值線圖。
例如,讓我們讀取一個預先儲存的 2007 年世界不同國家的預期壽命資料,如果可以建立等值線圖的國家使用名稱,使用預期壽命數字,我們可以為每個國家賦予不同的顏色。
請參閱下面的程式碼。
import plotly.express as px
df = px.data.gapminder().query("year==2007")
fig = px.choropleth(df, locations="iso_alpha", color="lifeExp", hover_name="country")
fig.show()
輸出:
當我們將滑鼠懸停在一個國家/地區時,hover_name
引數會顯示國家名稱。