Plotly使用add_trace绘制多trace时如何设置x轴偏移避免标记重叠?
分类序列水平偏移实现方案
核心逻辑:Plotly会自动将字符串类型的分类X轴映射为从0开始的连续数值索引,我们可以手动基于这些数值坐标给不同trace叠加微小水平偏移,再手动设置X轴刻度对齐原始分类位置,即可实现标记不重叠的效果,不需要依赖内置偏移参数。
修改后可运行代码
import plotly.graph_objects as go fig2 = go.Figure() # 原始分类标签 x_labels = ['10 days', '20 days', '30 days'] # 分类对应的内部数值坐标 x_base = list(range(len(x_labels))) # 偏移量,可根据标记大小调整 offset = 0.15 y_data1 = [0.4, 0.7, 0.9] y_err_data1 = [0.025, 0.03, 0.05] y_data2 = [0.6, 0.65, 0.7] y_err_data2 = [0.05, 0.03, 0.01] # 第一个trace向左偏移 fig2.add_trace(go.Scatter( x=[i - offset for i in x_base], y=y_data1, error_y=dict(type='data', symmetric=True, array=y_err_data1, visible=True), mode='markers' )) # 第二个trace向右偏移 fig2.add_trace(go.Scatter( x=[i + offset for i in x_base], y=y_data2, error_y=dict(type='data', symmetric=True, array=y_err_data2, visible=True), mode='markers' )) # 手动对齐X轴刻度与原始分类 fig2.update_xaxes( tickvals=x_base, ticktext=x_labels, # 可选:调整X轴边距,避免标记贴边 range=[-0.5, len(x_labels)-0.5] ) fig2.show()
注意事项
- 偏移量
offset可灵活调整,两个序列的偏移总距离不要超过1,避免相邻分类的标记互相错位 - 若有更多数据序列,可按等差逻辑依次分配偏移值(比如3个序列可使用
-offset、0、+offset的偏移规则),保证同分类下的标记均匀分布 - 误差棒会跟随X值同步偏移,不需要额外配置参数
内容的提问来源于stack exchange,提问作者Hemanshu Das
相关产品推荐
相关产品推荐

