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

Plotly中如何强制将数字字符串作为注释的X轴位置使用?

解决Plotly将数字字符串解析为浮点数导致注释偏移的问题

方法1:显式设置x轴为分类类型

直接把x轴类型指定为category,Plotly就会把所有x值当作字符串分类处理,不会自动解析成数字,散点和注释的位置就能完全匹配。示例代码:

import plotly.graph_objects as go

x = ["10", "20", "30"]
y = [1, 2, 3]

fig = go.Figure()
fig.add_scatter(x=x, y=y, mode="markers")
# 添加目标注释
fig.add_annotation(x="10", y=1, text="目标注释", showarrow=True)
# 强制x轴为分类类型
fig.update_layout(xaxis_type="category")
fig.show()

方法2:给数字字符串加不可见字符

如果不想改动轴类型,就在每个数字字符串后面加个零宽空格(\u200b),让Plotly无法识别成可解析的数字,只能当作普通字符串处理。注意注释里的x值也要加同样的字符:

import plotly.graph_objects as go

# 给每个数字字符串追加零宽空格
x = ["10\u200b", "20\u200b", "30\u200b"]
y = [1, 2, 3]

fig = go.Figure()
fig.add_scatter(x=x, y=y, mode="markers")
# 注释的x值要和数据里的一致
fig.add_annotation(x="10\u200b", y=1, text="目标注释", showarrow=True)
fig.show()

方法3:用Plotly Express指定分类顺序

如果用Plotly Express绘图,通过category_orders参数明确指定x轴的分类顺序,就能强制x值以字符串形式被识别,避免自动解析:

import plotly.express as px
import pandas as pd

df = pd.DataFrame({"x": ["10", "20", "30"], "y": [1, 2, 3]})
# 指定x轴的分类顺序,强制按字符串处理
fig = px.scatter(df, x="x", y="y", category_orders={"x": ["10", "20", "30"]})
fig.add_annotation(x="10", y=1, text="目标注释", showarrow=True)
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:45:37