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

Python Plotly日期类型X轴如何设置按月/按周刻度步长

Plotly 日期型X轴设置月/周间隔刻度方法

核心配置方法

Plotly 对日期类型坐标轴提供了原生的时间间隔配置能力,不需要手动枚举所有刻度值,直接在layout的xaxis字段配置三个参数即可实现自定义步长:

  • tickmode:设为'linear',启用固定间隔的时间刻度规则
  • dtick:设置刻度步长,格式为「时间单位+间隔数」,月用大写M、周用大写W,比如M1代表1个月间隔,W1代表1周间隔
  • tickformat:可选,设置刻度文本的显示格式,比如'%Y-%m'显示「年-月」格式,'%Y-%m-%d'显示完整年月日

注意:时间单位必须大写,小写m代表分钟,小写w无法被识别为周单位。

可运行修正代码

原代码缺失Layout的导入,以下是补全后、加入X轴刻度配置的完整代码:

import pandas as pd
import plotly.graph_objects as go
from plotly.graph_objects import Layout

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
df['Date']=pd.to_datetime(df['Date'])    
dfg = df.groupby([pd.Grouper(key='Date', freq='M'), 'direction']).size().to_frame('counts')
dfg.reset_index(inplace=True)

# X轴刻度配置
xaxis_conf = {
    # 按月显示配置(1个月间隔)
    "tickmode": "linear",
    "dtick": "M1", # 要3个月/季度间隔就改成M3,12个月/年间隔改成M12
    "tickformat": "%Y-%m",
    "gridcolor": "#f0f0f0"

    # 按周显示替换成以下配置即可
    # "dtick": "W1", # 2周间隔改成W2
    # "tickformat": "%Y-%m-%d",
    # 如果需要周刻度从周一开始,加一行配置指定基准周一日期即可:
    # "tick0": "2015-01-05"
}

layout = Layout(
    title='AAPL 涨跌方向月度统计',
    plot_bgcolor='rgba(0,0,0,0)', 
    xaxis = xaxis_conf,
    yaxis = dict(gridcolor='#f0f0f0')
)

fig = go.Figure(layout=layout)

for d,c in zip(dfg['direction'].unique(), ['red','green']):
    dfs = dfg.query('direction == @d')
    fig.add_trace(
        go.Scatter(
            x=dfs['Date'],
            y=dfs['counts'],
            mode='lines',
            line=dict(color=c, width=3),
            name=d
        )
    )

fig.show()

常用步长参考

  • 单月间隔:dtick="M1",可搭配tickformat="%Y年%m月"显示中文格式月份
  • 单周间隔:dtick="W1",默认刻度锚点为周日,可通过tick0参数指定起始日期调整周起始
  • 季度间隔:dtick="M3",自动每3个月生成一个刻度
  • 年度间隔:dtick="M12",每年生成一个刻度

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:18:19