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

Plotly双轴图表:隐藏副X轴日期值与调整图层顺序

Plotly双轴图表问题解决方案

核心问题修复方案

1. 顶部副X轴仅显示分类标签

副X轴默认会继承主X轴的日期刻度,需通过配置隐藏默认刻度,手动指定分类标签的位置与文本。

2. 柱状图置于折线图下方

Plotly按图表添加顺序渲染图层,先添加柱状图,再添加折线图,即可让折线图覆盖在柱状图上方。


修改后的完整代码

import plotly.graph_objects as go
import pandas as pd

# 模拟示例数据
dates = pd.date_range(start='2023-01-01', periods=30, freq='D')
values_bar = [10, 12, 15] * 10
values_line = [20, 22, 25] * 10
df = pd.DataFrame({'date': dates, 'bar_value': values_bar, 'line_value': values_line})

# 定义阶段区间并计算标签中心位置
pre_dates = df[df['date'] <= '2023-01-10']['date']
during_dates = df[(df['date'] > '2023-01-10') & (df['date'] <= '2023-01-20')]['date']
post_dates = df[df['date'] > '2023-01-20']['date']
pre_center = pre_dates.mean()
during_center = during_dates.mean()
post_center = post_dates.mean()

fig = go.Figure()

# 先添加柱状图(确保在底层)
fig.add_trace(go.Bar(
    x=df['date'],
    y=df['bar_value'],
    name='柱状图',
    yaxis='y1'
))

# 后添加折线图(自动在顶层)
fig.add_trace(go.Scatter(
    x=df['date'],
    y=df['line_value'],
    name='折线图',
    yaxis='y2',
    line=dict(width=2)
))

# 配置底部主X轴
fig.update_xaxes(
    title='日期',
    type='date'
)

# 配置顶部副X轴:隐藏默认刻度,仅显示分类标签
fig.update_xaxes(
    title='阶段',
    type='date',
    showticklabels=False,  # 隐藏默认日期刻度
    ticktext=['pre', 'during', 'post'],
    tickvals=[pre_center, during_center, post_center],
    side='top',
    anchor='free',
    overlaying='x',
    position=1
)

# 配置左右Y轴
fig.update_yaxes(
    title='柱状图数值',
    side='left',
    position=0.1
)
fig.update_yaxes(
    title='折线图数值',
    side='right',
    overlaying='y'
)

# 布局优化
fig.update_layout(
    title='双轴叠加图表',
    barmode='overlay',  # 允许柱状图与折线图叠加
    margin=dict(l=100, r=100, t=100, b=100)
)

fig.show()

关键改动说明

  • 图层顺序:先添加柱状图再添加折线图,利用Plotly的渲染顺序实现层级关系。
  • 副X轴配置:通过showticklabels=False隐藏默认日期刻度,ticktext和tickvals绑定分类文本与对应区间的中心位置,精准显示需要的标签。
  • 叠加模式:设置barmode='overlay',保证柱状图和折线图在同一X轴区域正常显示,避免布局偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:41:57