如何在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
相关产品推荐
相关产品推荐

