如何设置Plotly Python范围选择器默认显示1个月数据
解决Plotly默认显示1个月数据的问题
要让图表默认只显示最近1个月的数据,只需在x轴配置中添加range参数,指定默认显示的日期范围即可。具体修改步骤如下:
- 转换日期列格式:将字符串类型的日期转为datetime类型,方便后续时间计算
- 计算默认日期范围:取数据集的最后一天,往前推1个月作为起始日期
- 配置x轴默认范围:将计算好的起始、结束日期传入xaxis的
range参数
修改后的完整代码:
import plotly.graph_objects as go import pandas as pd # Load data df = pd.read_csv( "https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv") df.columns = [col.replace("AAPL.", "") for col in df.columns] # 将日期列转为datetime类型 df['Date'] = pd.to_datetime(df['Date']) # 计算默认显示的最后1个月范围 last_date = df['Date'].iloc[-1] start_date = last_date - pd.DateOffset(months=1) # Create figure fig = go.Figure() fig.add_trace( go.Scatter(x=list(df.Date), y=list(df.High))) # Set title fig.update_layout( title_text="Time series with range slider and selectors" ) # Add range slider fig.update_layout( xaxis=dict( rangeselector=dict( buttons=list([ dict(count=1, label="1m", step="month", stepmode="backward"), dict(count=6, label="6m", step="month", stepmode="backward"), dict(count=1, label="YTD", step="year", stepmode="todate"), dict(count=1, label="1y", step="year", stepmode="backward"), dict(step="all") ]) ), rangeslider=dict( visible=True ), type="date", # 设置默认显示的日期范围 range=[start_date, last_date] ) ) fig.show()
补充说明
- 转换日期列是为了能通过
pd.DateOffset准确计算时间差 range参数接受包含起始、结束日期的列表,Plotly会自动识别datetime类型并渲染对应时间范围- 修改后不影响原有范围选择器按钮的功能,点击按钮仍可切换不同时间范围
内容的提问来源于stack exchange,提问作者Devendra Yadav
相关产品推荐
相关产品推荐

