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
相关产品推荐
相关产品推荐

