Plotly 等值線圖

Ammar Ali 2024年2月15日
Plotly 等值線圖

本教程將討論在 Python 中使用 Plotly 的 choropleth() 函式建立等值線圖。

在 Python 中使用 Plotly 的 choropleth() 函式建立等值線圖

等值線圖是將資料表示為彩色多邊形的地圖。它用於繪製具有不同顏色的國家和州的地圖。

我們可以使用 plotly.expresschoropleth() 函式來建立等值線圖。要建立繪圖,我們必須在 choropleth() 函式內傳遞一個包含幾何資訊的 DataFrame 和一個我們想在地圖上顯示的特徵列表。

例如,我們可以使用世界地圖的內建資料來繪製一個像世界地圖一樣的簡單地圖,並突出顯示美國德克薩斯州。請參閱下面的程式碼。

import plotly.express as px

fig = px.choropleth(locationmode="USA-states", locations=["TX"])
fig.show()

輸出:

簡單的等值線圖

德克薩斯州在上圖中以藍色突出顯示,但我們看不到它。我們可以使用 scope 引數顯示像美國這樣的部分,而不是顯示整個地圖。

範圍引數可以設定為世界、usaeuropeasiaafricanorthsouth 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_spacingfacet_col_spacing 引數更改每個子圖之間的間距,並將其值設定為從 0 到 1 的浮點數。我們可以使用 title 引數為直方圖指定標題。

我們可以使用 widthheight 引數設定繪圖的寬度和高度。我們可以將 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 支援的顏色序列,如 Dark24Light24

例如,讓我們更改上圖的顏色順序。請參閱下面的程式碼。

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 引數會顯示國家名稱。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook