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

如何在Plotly散点图中设置指定文本为粗体?

Plotly散点图指定文本设置为粗体解决方案

我使用Plotly库绘制散点图,希望将图中的"test ABBE1"、"testtest21"、"test23"设置为粗体。以下是当前实现代码及输出效果,请求协助实现需求:

import plotly.express as px
import pandas as pd
data = {
    "lib_acte":["test 98lop1", "test9665 opp1", "test QSDFR1", "test ABBE1", "testtest21","test23"],
    "x":[12.6, 10.8, -1, -15.2, -10.4, 1.6],
    "y":[15, 5, 44, -11, -35, -19],
    "circle_size":[375, 112.5, 60,210, 202.5, 195],
    "color":["green", "green", "green", "red", "red", "red"],
    "textfont":["normal", "normal", "normal", "bold", "bold", "bold"],
}

#load data into a DataFrame object:
df = pd.DataFrame(data)

fig = px.scatter(
        df,
        x="x", 
        y="y", 
        color="color",
        size='circle_size',
        text="lib_acte",
        hover_name="lib_acte",
        color_discrete_map={"red": "red", "green": "green"},
        title="chart"
      )
fig.update_traces(textposition='middle right', textfont_size=14, textfont_color='black', textfont_family="Inter", hoverinfo="skip")
newnames = {'red':'red title', 'green': 'green title'}

fig.update_layout(
        {
            
            'yaxis': {
                "range": [-200, 200],
                'zerolinewidth': 2, 
                "zerolinecolor": "red",
                "tick0": -200,
                "dtick":45,
            },
            'xaxis': {
                "range": [-200, 200],
                'zerolinewidth': 2, 
                "zerolinecolor": "gray",
                "tick0": -200,
                "dtick": 45,
                #  "scaleanchor": 'y'
            },
           
            "height": 800,
        }
    )
fig.add_scatter(
        x=[0, 0, -200, -200],
        y=[0, 200, 200, 0],
        fill="toself",
        fillcolor="gray",
        zorder=-1,
        mode="markers",
        marker_color="rgba(0,0,0,0)",
        showlegend=False,
        hoverinfo="skip"
    )
fig.add_scatter(
        x=[0, 0, 200, 200],
        y=[0, -200, -200, 0],
        fill="toself",
        fillcolor="yellow",
        zorder=-1,
        mode="markers",
        marker_color="rgba(0,0,0,0)",
        showlegend=False,
        hoverinfo="skip"
    )
fig.update_layout(
   
            paper_bgcolor="#F1F2F6",
        )
fig.show()

当前输出效果:
当前散点图输出效果


解决方案

Plotly支持在文本中使用HTML标签设置样式,直接给目标文本包裹<b>标签即可实现粗体效果,无需复杂的字体参数配置。

修改后的完整代码如下:

import plotly.express as px
import pandas as pd
data = {
    # 给需要加粗的文本添加<b>标签
    "lib_acte":["test 98lop1", "test9665 opp1", "test QSDFR1", "<b>test ABBE1</b>", "<b>testtest21</b>","<b>test23</b>"],
    "x":[12.6, 10.8, -1, -15.2, -10.4, 1.6],
    "y":[15, 5, 44, -11, -35, -19],
    "circle_size":[375, 112.5, 60,210, 202.5, 195],
    "color":["green", "green", "green", "red", "red", "red"],
    "textfont":["normal", "normal", "normal", "bold", "bold", "bold"],
}

df = pd.DataFrame(data)

fig = px.scatter(
        df,
        x="x", 
        y="y", 
        color="color",
        size='circle_size',
        text="lib_acte",  # 直接使用带HTML标签的文本
        hover_name="lib_acte",
        color_discrete_map={"red": "red", "green": "green"},
        title="chart"
      )
# HTML标签优先级高于textfont参数,无需额外修改字体权重
fig.update_traces(textposition='middle right', textfont_size=14, textfont_color='black', textfont_family="Inter", hoverinfo="skip")

fig.update_layout(
        {
            'yaxis': {
                "range": [-200, 200],
                'zerolinewidth': 2, 
                "zerolinecolor": "red",
                "tick0": -200,
                "dtick":45,
            },
            'xaxis': {
                "range": [-200, 200],
                'zerolinewidth': 2, 
                "zerolinecolor": "gray",
                "tick0": -200,
                "dtick": 45,
            },
            "height": 800,
            paper_bgcolor="#F1F2F6",
        }
    )

# 添加背景色块
fig.add_scatter(
        x=[0, 0, -200, -200],
        y=[0, 200, 200, 0],
        fill="toself",
        fillcolor="gray",
        zorder=-1,
        mode="markers",
        marker_color="rgba(0,0,0,0)",
        showlegend=False,
        hoverinfo="skip"
    )
fig.add_scatter(
        x=[0, 0, 200, 200],
        y=[0, -200, -200, 0],
        fill="toself",
        fillcolor="yellow",
        zorder=-1,
        mode="markers",
        marker_color="rgba(0,0,0,0)",
        showlegend=False,
        hoverinfo="skip"
    )

fig.show()

修改说明:

  • 在data["lib_acte"]中,将需要加粗的文本用<b>和</b>标签包裹,Plotly会自动解析HTML并渲染粗体样式
  • 原代码中的textfont列可保留,但不会影响最终效果,因为HTML标签的样式优先级更高

内容的提问来源于stack exchange,提问作者user29295031

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:44:57