You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义Plotly气泡图标签的文本位置与样式

如何自定义Plotly气泡图标签的文本位置与样式

嘿,看起来你已经把气泡标签的基本位置搞定啦!想要给这些标签加上更美观的样式(比如带背景框、调整字体样式),Plotly的annotations其实是最适合的工具,之前没成功可能是没找到批量添加的正确方式,我来帮你调整代码~

我们可以直接循环遍历数据集中的每个点,为每个气泡创建单独的注释(annotation),这样就能精准控制每个标签的位置、背景、字体样式啦。下面是修改后的完整代码:

import plotly.graph_objects as go
import plotly.express as px 
import pandas as pd

margin_factor = 1.6
data = {'x': [1.5, 1.6, -1.2],
        'y': [21, -16, 46],
        'circle-size': [10, 5, 6],
        'circle-color': ["red","red","green"],
        'tttt': ["the last xt for MO","the last xt for MO pom","the last xt for MO %"]
        }
# Create DataFrame
df = pd.DataFrame(data)
fig = px.scatter(
    df,
    x="x", 
    y="y", 
    color="circle-color",
    size='circle-size'
)

fig.update_layout(
    {
        'xaxis': {
            "range": [-100, 100],
            'zerolinewidth': 3, 
            "zerolinecolor": "blue",
            "tick0": -100,
            "dtick": 25,
            'scaleanchor': 'y'
        },
        'yaxis': {
            "range": [-100, 100],
            'zerolinewidth': 3, 
            "zerolinecolor": "green",
            "tick0": -100,
            "dtick": 25
        },
        "width": 500,
        "height": 500
    }
)

# 计算位置偏移量,控制标签和气泡的距离
x_pad = (max(df.x) - min(df.x)) / 8
y_pad = (max(df.y) - min(df.y)) / 30

# 批量添加带样式的注释标签
for idx, row in df.iterrows():
    fig.add_annotation(
        x=row['x'] + x_pad,  # 标签的x位置,和气泡保持偏移
        y=row['y'],          # 标签的y位置
        text=row['tttt'],    # 标签文本内容
        showarrow=False,     # 不需要指向气泡的箭头
        font=dict(
            color="white",   # 字体颜色
            size=10          # 字体大小
        ),
        bgcolor="#1CBE4F",   # 标签背景色
        bordercolor="black", # 标签边框颜色
        borderwidth=2,       # 边框宽度
        xanchor="left",      # 文本相对于x位置的对齐方式
        yanchor="middle",    # 文本相对于y位置的对齐方式
        xshift=5,            # 额外的水平偏移
        yshift=0             # 额外的垂直偏移
    )

fig.show()

关键修改说明:

  • 去掉了原来的add_shape(手动画矩形背景)和add_trace(添加文本)的组合,改用add_annotation直接创建带背景的标签,更简洁可控。
  • 通过循环df.iterrows()遍历每个数据点,为每个气泡生成专属注释,避免手动逐个添加的麻烦。
  • 可以通过font、bgcolor、bordercolor等参数直接调整标签的样式,完全匹配你想要的效果。
  • 用xanchor、yanchor和xshift、yshift精准控制标签相对于气泡的位置,确保排版美观。

这样调整后,生成的标签就会带有你想要的绿色背景、黑色边框和白色字体啦,比原来的方式更灵活易维护~

备注:内容来源于stack exchange,提问作者user29295031

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:13:07