提问人:jf328 提问时间:12/11/2014 最后编辑:cottontailjf328 更新时间:4/18/2023 访问量:83830
如何在绘制时间序列数据后设置 xlim 和 xticks
How to set xlim and xticks after plotting time-series data
问:
fig = plt.figure()
ax = fig.gca()
ts.plot(ax=ax)
我知道我可以在熊猫绘图例程中设置 xlim:,但是熊猫绘图完成后如何更改它?ts.plot(xlim = ...)
ax.set_xlim(( t0.toordinal(), t1.toordinal() )
有时有效,但如果 Pandas 将 x 轴格式化为纪元的月份,而不是天,这将失败。
有没有办法知道 pandas 如何将日期转换为 x 轴,然后以同样的方式转换我的 xlim?
答:
47赞
cilix
7/19/2015
#1
如果我使用值设置 x 轴限制,它对我有用(使用 pandas 0.16.2)。pd.Timestamp
例:
import pandas as pd
# Create a random time series with values over 100 days
# starting from 1st March.
N = 100
dates = pd.date_range(start='2015-03-01', periods=N, freq='D')
ts = pd.DataFrame({'date': dates,
'values': np.random.randn(N)}).set_index('date')
# Create the plot and adjust x/y limits. The new x-axis
# ranges from mid-February till 1st July.
ax = ts.plot()
ax.set_xlim(pd.Timestamp('2015-02-15'), pd.Timestamp('2015-07-01'))
ax.set_ylim(-5, 5)
结果:
请注意,如果您在同一图中绘制多个时间序列,请确保在最后一个命令之后设置 xlim/ylim,否则 pandas 将自动重置限制以匹配内容。ts.plot()
0赞
cottontail
4/18/2023
#2
对于轴限制的更“动态”设置,您可以从日期时间中减去/添加。例如,要在 x 轴限制的任一侧进行 1 天的填充,可以使用以下方法。Timedelta
dates = pd.date_range(start='2015-03-01', periods=100, freq='h')
ts = pd.DataFrame({'date': dates, 'values': np.random.randn(len(dates))})
# plot the time-series
ax = ts.plot(x='date', y='values', legend=False)
# set x-axis limits with the extra day padding
ax.set(xlim=(ts['date'].min() - pd.Timedelta('1d'), ts['date'].max() + pd.Timedelta('1d')));
您还可以在调用中设置轴限制。plot()
ts.plot(x='date', y='values',
xlim=(ts['date'].min() - pd.Timedelta('1d'), ts['date'].max() + pd.Timedelta('1d')));
评论