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