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

如何在Plotly图表中仅替换X轴显示标签而保留原有数据与图表形态

如何在Plotly图表中仅替换X轴显示标签而保留原有数据与图表形态

嘿,我完全懂你的需求啦——你想保留基于month列的图表数据和整体形态,但把X轴上显示的标签换成label_object里的内容,完全不改动底层的图表结构,对吧?这事儿其实超简单,咱们只需要在Plotly的布局配置里做个刻度标签的映射就行,不用碰原始的x数据源~

核心解决方案

咱们的思路是:

  • 继续用month作为X轴的底层数据源(保证图表的形态和数据100%不变)
  • 在update_layout的xaxis设置中,通过tickvals和ticktext两个参数,把原始刻度值和新的显示标签做一一对应:
    • tickvals:指定原始的X轴刻度值(也就是你的month列表)
    • ticktext:对应要显示的新标签内容(也就是label_object列表)

修改后的完整代码

import plotly.graph_objects as go

# Add data
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
         'August', 'September', 'October', 'November', 'December']
label_object = ['Obj-1', 'Obj-2', 'Obj-3', 'Obj-4', 'Obj-5', 'Obj-6', 'Obj-7',
         'Obj-8', 'Obj-9', 'Obj-10', 'Obj-11', 'Obj-12']
high_2000 = [32.5, 37.6, 49.9, 53.0, 69.1, 75.4, 76.5, 76.6, 70.7, 60.6, 45.1, 29.3]
low_2000 = [13.8, 22.3, 32.5, 37.2, 49.9, 56.1, 57.7, 58.3, 51.2, 42.8, 31.6, 15.9]
high_2007 = [36.5, 26.6, 43.6, 52.3, 71.5, 81.4, 80.5, 82.2, 76.0, 67.3, 46.1, 35.0]
low_2007 = [23.6, 14.0, 27.0, 36.8, 47.6, 57.7, 58.9, 61.2, 53.3, 48.5, 31.0, 23.6]
high_2014 = [28.8, 28.5, 37.0, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
low_2014 = [12.7, 14.3, 18.6, 35.5, 49.9, 58.0, 60.0, 58.6, 51.7, 45.2, 32.2, 29.1]

fig = go.Figure()
# Create and style traces(这部分完全没改动,保留原始数据)
fig.add_trace(go.Scatter(x=month, y=high_2014, name='High 2014',
                         line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=month, y=low_2014, name = 'Low 2014',
                         line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=month, y=high_2007, name='High 2007',
                         line=dict(color='firebrick', width=4,
                              dash='dash') # dash options include 'dash', 'dot', and 'dashdot'
))
fig.add_trace(go.Scatter(x=month, y=low_2007, name='Low 2007',
                         line = dict(color='royalblue', width=4, dash='dash')))
fig.add_trace(go.Scatter(x=month, y=high_2000, name='High 2000',
                         line = dict(color='firebrick', width=4, dash='dot')))
fig.add_trace(go.Scatter(x=month, y=low_2000, name='Low 2000',
                         line=dict(color='royalblue', width=4, dash='dot')))

# Edit the layout(重点修改这里,添加刻度标签映射)
fig.update_layout(
        title=dict(
            text='Average High and Low Temperatures in New York'
        ),
        xaxis=dict(
            title=dict(
                text='Object Label' # 这里也可以把X轴标题改成你想要的内容
            ),
            tickvals=month, # 原始的X轴刻度值
            ticktext=label_object # 要显示的新标签
        ),
        yaxis=dict(
            title=dict(
                text='Temperature (degrees F)'
            )
        ),
)

fig.show()

关键说明

  • 所有的fig.add_trace部分完全没改,x=month依然保留,所以图表的底层数据、线条形态、整体布局和原来一模一样
  • 我们只是通过tickvals和ticktext做了一个“显示映射”:Plotly会找到每个tickvals里的原始值,然后把它显示成ticktext里对应的内容,完全不影响底层的数据逻辑
  • 如果你的数据是存在DataFrame里的,只需要把tickvals换成df['month'],ticktext换成df['label_object']就行,逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:40:27