gpt4 book ai didi

python - 设置用 Pandas 绘制的时间序列的边距

转载 作者:行者123 更新时间:2023-12-04 02:40:07 24 4
gpt4 key购买 nike

我有以下用于生成时间序列图的代码

import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
series = pd.Series([np.sin(ii*np.pi) for ii in range(30)],
index=pd.date_range(start='2019-01-01', end='2019-12-31',
periods=30))
series.plot(ax=ax)

enter image description here

我想为 x 和 y 设置一个自动限制,我尝试使用 ax.margins() 但它似乎不起作用:

ax.margins(y=0.1, x=0.05)
# even with
# ax.margins(y=0.1, x=5)

enter image description here

我正在寻找的是一种自动方法,如 padding=0.1(图形周围 10% 的空白)

最佳答案

当坐标轴有日期时,Pandas 和 matplotlib 在协作时似乎经常混淆。由于某些原因,在这种情况下,ax.margins 无法按预期使用 x 轴。

这里有一个解决方法,它似乎确实可以完成这项工作,明确地移动了 xlims:

xmargins = 0.05
ymargins = 0.1
ax.margins(y=ymargins)
x0, x1 = plt.xlim()
plt.xlim(x0-xmargins*(x1-x0), x1+xmargins*(x1-x0))

或者,您可以直接使用 matplotlib 的绘图,它确实按预期工作,将边距应用于日期轴。

ax.plot(series.index, series)
ax.margins(y=0.1, x=0.05)

附言:This post谈到将 use_sticky_edges 设置为 False 并在设置边距后调用 autoscale_view,但这似乎在这里不起作用。

ax.use_sticky_edges = False
ax.autoscale_view(scaley=True, scalex=True)

关于python - 设置用 Pandas 绘制的时间序列的边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59776664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com