Plotly 气泡图

Ammar Ali 2024年2月15日
Plotly 气泡图

本教程将讨论使用 Plotly 的 scatter() 函数创建气泡图。

Python 中的 Plotly 气泡图

散点图也称为气泡图,将数据点显示为图形上的圆圈或气泡。我们可以使用 plotly.expressscatter() 函数来创建气泡图或散点图。

要创建散点图或气泡图,我们必须在 scatter() 函数中传递 x 和 y 轴值。如果只给出一个轴值,该函数将使用值的索引作为第二个轴值。

例如,让我们使用一些随机数据创建一个气泡图。请参阅下面的代码。

import plotly.express as px

values = [2, 5, 7, 8, 3, 6]
fig = px.scatter(y=values, width=500, height=400)
fig.show()

输出:

使用散点的气泡图

widthheight 参数用于设置上图的宽度和高度(以像素为单位)。我们还可以使用数据框创建气泡图。

对于数据框,我们可以使用 data_frame 参数在 scatter() 函数内传递数据。我们可以使用 color 参数为每​​个气泡赋予随机颜色。

scatter() 函数将使用颜色序列来设置每个气泡的颜色。我们可以使用 size 参数设置每个气泡的大小,并将其值设置为整数列表。我们可以使用 hover_name 参数为每​​个气泡设置悬停标题,并将其值设置为字符串列表。

我们还可以使用 text 参数在每个气泡内添加文本,并将其值设置为字符串列表。我们可以使用 facet_col 参数将每个气泡拆分到不同的图上,将每个气泡放在不同的图上。

我们可以使用 orientation 参数设置绘图的方向,并将其值设置为 h 表示水平方向,v 表示垂直方向。例如,让我们更改上面提到的属性。请参阅下面的代码。

import plotly.express as px

values = [3, 4, 5]
labels = ["a", "b", "c"]
fig = px.scatter(
    y=values,
    x=labels,
    width=500,
    height=400,
    color=labels,
    size=[5, 10, 15],
    hover_name=["B1", "B2", "B3"],
    text=["1", "2", "3"],
    facet_col=labels,
)
fig.show()

输出:

改变气泡图的属性

我们还可以在每个气泡上添加误差条,使用 error_x 表示 x 轴误差,error_y 表示 y 轴误差。

我们可以使用 color_discrete_sequence 更改默认颜色序列,并使用 plotly.express.color.qualitative 属性将其值设置为 Plotly 支持的颜色序列,如 Dark24Light24。例如,让我们改变上面气泡图的颜色顺序。

请参阅下面的代码。

import plotly.express as px

values = [3, 4, 5]
labels = ["a", "b", "c"]
fig = px.scatter(
    y=values,
    x=labels,
    width=500,
    height=400,
    color=labels,
    size=[5, 10, 15],
    hover_name=["B1", "B2", "B3"],
    text=["1", "2", "3"],
    error_y=[1, 2, 1],
    color_discrete_sequence=px.colors.qualitative.Dark24,
)
fig.show()

输出:

改变气泡图的颜色顺序

要改变颜色序列,我们需要改变上面代码中的颜色序列名称,比如从 Dark24Light24。如果我们想给每个气泡我们的颜色而不是颜色序列,我们可以使用 color_discrete_map 参数来覆盖颜色序列。

检查此链接以获取有关 Plotly 颜色的更多详细信息。例如,让我们更改上图中前两个气泡的颜色。

请参阅下面的代码。

import plotly.express as px

values = [3, 4, 5]
labels = ["a", "b", "c"]
fig = px.scatter(
    y=values,
    x=labels,
    width=500,
    height=400,
    color=labels,
    size=[5, 10, 15],
    hover_name=["B1", "B2", "B3"],
    text=["1", "2", "3"],
    error_y=[1, 2, 1],
    color_discrete_map={"a": "red", "b": "green"},
)
fig.show()

输出:

改变气泡的颜色

我们只更改了前两种颜色,其余颜色将来自默认颜色序列。我们可以使用 opacity 参数设置气泡的不透明度,并将其值从 0 设置为 1

我们还可以使用 log_xlog_y 参数将轴更改为对数比例,并将其值设置为 true。我们可以使用 title 参数设置图形的标题。

我们可以使用 marginal_xmarginal_y 在气泡图上方绘制分布图,以显示点的分布。例如,让我们更改上面提到的属性。

请参阅下面的代码。

import plotly.express as px

values = [3, 4, 5]
labels = ["a", "b", "c"]
fig = px.scatter(
    y=values,
    x=labels,
    width=500,
    height=400,
    color=labels,
    size=[5, 10, 15],
    hover_name=["B1", "B2", "B3"],
    text=["1", "2", "3"],
    error_y=[1, 2, 1],
    color_discrete_map={"a": "red", "b": "green"},
    title="Bubble Chart",
    opacity=0.7,
    marginal_x="histogram",
)
fig.show()

输出:

改变气泡图的属性 2

我们还可以使用 fig.update_traces() 函数使用 scatter() 函数跟踪更改气泡图的许多其他属性。我们可以使用 showlegend 参数隐藏图例并将其值设置为 false。

我们可以使用 error_y_color 参数更改误差线的颜色,默认情况下与气泡颜色相同。我们可以使用 error_y_thickness 参数来更改误差线的线宽。

例如,让我们改变上面提到的痕迹。请参阅下面的代码。

import plotly.express as px

values = [3, 4, 5]
labels = ["a", "b", "c"]
fig = px.scatter(
    y=values,
    x=labels,
    width=500,
    height=400,
    color=labels,
    size=[5, 10, 15],
    hover_name=["B1", "B2", "B3"],
    text=["1", "2", "3"],
    error_y=[1, 2, 1],
    color_discrete_map={"a": "red", "b": "green"},
    title="Bubble Chart",
    opacity=0.7,
    marginal_x="histogram",
)
fig.update_traces(showlegend=False, error_y_color="red", error_y_thickness=5)
fig.show()

输出:

改变气泡图的轨迹

检查此链接以获取有关 scatter() 函数跟踪的更多详细信息。

作者: 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