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

如何在Plotly图表X轴精准显示年月信息?

Plotly折线图X轴精准显示解决方案

问题根源

你的year_month列是object类型,Plotly会默认将其视为连续时间轴,自动生成多余刻度,导致视觉上数据点更多的错觉——仅用xaxis_tickformat无法解决,核心是要让轴只识别你实际存在的月份数据。

解决步骤

1. 转换数据类型

先把object类型的year_month列转为datetime类型,让Plotly正确识别时间维度:

import pandas as pd
import plotly.express as px

# 创建示例数据
df = pd.DataFrame({
    'year_month': ['2023-01','2023-02','2023-03'],
    'p95_gbs': [20.5,22.2,23.9]
})

# 转换为datetime类型
df['year_month'] = pd.to_datetime(df['year_month'])

2. 自定义X轴刻度

绘图时通过update_layout指定X轴仅显示实际存在的月份,并设置中文格式的刻度文本:

# 生成中文格式的刻度文本(YYYY-月份名称)
tick_text = df['year_month'].dt.strftime('%Y-%B').replace({
    'January': '一月',
    'February': '二月',
    'March': '三月'
})

# 绘制折线图并设置X轴
fig = px.line(df, x='year_month', y='p95_gbs')
fig.update_layout(
    xaxis={
        'tickmode': 'array',
        'tickvals': df['year_month'],  # 仅绑定实际存在的日期值
        'ticktext': tick_text,         # 自定义显示的中文文本
        'tickangle': 45                # 可选:旋转刻度避免重叠
    }
)

fig.show()

如果环境支持中文日期格式化,也可以用更简洁的写法:

tick_text = df['year_month'].dt.strftime('%Y-%m').apply(
    lambda x: x.replace('-01', '-一月').replace('-02', '-二月').replace('-03', '-三月')
)

关键说明

  • tickmode='array'强制Plotly使用你指定的刻度值,而非自动生成
  • tickvals绑定DataFrame中实际存在的日期数据,确保无多余刻度
  • ticktext自定义显示的文本格式,满足中文年月的展示需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:30:17