matplotlib图形边框自动调整一些边距
当我绘制matplotlib图时,我总是喜欢那里的边框框,但有时一些数据可能隐藏在边框旁边。 所以我希望我能把边界画得离有效数据稍微远一点。我知道我可以使用xlim()和ylim()手动调整它,但如果我更改了数据,它应该再次优化。 有没有一种方法可以自动在图形和边框之间保留一些边距 e、 g 代码将输出一个图形,如下所示:matplotlib图形边框自动调整一些边距,matplotlib,Matplotlib,当我绘制matplotlib图时,我总是喜欢那里的边框框,但有时一些数据可能隐藏在边框旁边。 所以我希望我能把边界画得离有效数据稍微远一点。我知道我可以使用xlim()和ylim()手动调整它,但如果我更改了数据,它应该再次优化。 有没有一种方法可以自动在图形和边框之间保留一些边距 e、 g 代码将输出一个图形,如下所示: 台阶几乎被边界弄乱了!我希望保留一些空白,以便更好地查看数据 基于我上面评论的建议,但现在正确处理时间戳对象,从中可以获取参数.value,它是以纳秒为单位的时间。然后,您
台阶几乎被边界弄乱了!我希望保留一些空白,以便更好地查看数据 基于我上面评论的建议,但现在正确处理
时间戳
对象,从中可以获取参数.value
,它是以纳秒为单位的时间。然后,您可以编写一个autolim()
函数来正确调整限制:
def autolim(pxmin=0.05, pxmax=0.05, pymin=0., pymax=0.05):
from pandas.tslib import Timestamp
ax = plt.gca()
x, y = ax.lines[0].get_data()
x = sorted(x)
y = sorted(y)
dx = x[-1].value - x[0].value
dy = y[-1] - y[0]
xmin = Timestamp(x[0].value - dx*pxmin)
xmax = Timestamp(x[-1].value + dx*pxmax)
ymin = y[0] - dy*pymin
ymax = y[-1] + dy*pymax
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
如果在代码的plt.show()
行之前调用此函数,则应获得:
您只是想调整轴的限制吗?可能是相同的行为,但希望它能自动在数据边框上添加更多空间。什么是数据边框?你想在轴和图形边缘之间的边距上留更多的空间,还是在艺术家和轴之间留更多的空间?@甲壳虫J也许你可以做
plt.xlim(0.9*min(x),1.1*max(x))
,plt.ylim(min(y),1.1*max(y))
或者类似的事情,这几乎是自动的……很好的建议,但似乎是:plt.xlim(.9*min(x),1.1*max(x))将报告错误:不支持的操作数类型*:“float”和“Timestamp”
def autolim(pxmin=0.05, pxmax=0.05, pymin=0., pymax=0.05):
from pandas.tslib import Timestamp
ax = plt.gca()
x, y = ax.lines[0].get_data()
x = sorted(x)
y = sorted(y)
dx = x[-1].value - x[0].value
dy = y[-1] - y[0]
xmin = Timestamp(x[0].value - dx*pxmin)
xmax = Timestamp(x[-1].value + dx*pxmax)
ymin = y[0] - dy*pymin
ymax = y[-1] + dy*pymax
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)