Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matplotlib图形边框自动调整一些边距_Matplotlib - Fatal编程技术网

matplotlib图形边框自动调整一些边距

matplotlib图形边框自动调整一些边距,matplotlib,Matplotlib,当我绘制matplotlib图时,我总是喜欢那里的边框框,但有时一些数据可能隐藏在边框旁边。 所以我希望我能把边界画得离有效数据稍微远一点。我知道我可以使用xlim()和ylim()手动调整它,但如果我更改了数据,它应该再次优化。 有没有一种方法可以自动在图形和边框之间保留一些边距 e、 g 代码将输出一个图形,如下所示: 台阶几乎被边界弄乱了!我希望保留一些空白,以便更好地查看数据 基于我上面评论的建议,但现在正确处理时间戳对象,从中可以获取参数.value,它是以纳秒为单位的时间。然后,您

当我绘制matplotlib图时,我总是喜欢那里的边框框,但有时一些数据可能隐藏在边框旁边。 所以我希望我能把边界画得离有效数据稍微远一点。我知道我可以使用xlim()和ylim()手动调整它,但如果我更改了数据,它应该再次优化。 有没有一种方法可以自动在图形和边框之间保留一些边距

e、 g

代码将输出一个图形,如下所示:


台阶几乎被边界弄乱了!我希望保留一些空白,以便更好地查看数据

基于我上面评论的建议,但现在正确处理
时间戳
对象,从中可以获取参数
.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)