如何在不拉伸情节的情况下扩展matplolib窗口?

时间:2017-07-07 10:17:51

标签: matplotlib

我想增加绘图周围的灰色区域,但保持绘图大小相同。我已经尝试过改变图形尺寸,最终拉伸了图形。 enter image description here

2 个答案:

答案 0 :(得分:2)

图中的轴相对于图形定位。默认情况下,你有例如图中宽度为0.125的一小部分,左边是空格。这意味着调整图形大小,也可以缩放轴。

您可以计算需要更改的间距,以便在重新调整图形时,轴尺寸保持不变。然后需要使用fig.subplots_adjust设置新的间距。

import matplotlib.pyplot as plt

def set_figsize(figw,figh, fig=None):
    if not fig: fig=plt.gcf()
    w, h = fig.get_size_inches()
    l = fig.subplotpars.left
    r = fig.subplotpars.right
    t = fig.subplotpars.top
    b = fig.subplotpars.bottom
    hor = 1.-w/float(figw)*(r-l)
    ver = 1.-h/float(figh)*(t-b)
    fig.subplots_adjust(left=hor/2., right=1.-hor/2., top=1.-ver/2., bottom=ver/2.)

fig, ax=plt.subplots()

ax.plot([1,3,2])

set_figsize(9,7)

plt.show()

然后,您可以在调整图形窗口大小时使用此功能更新子图格参数。

import matplotlib.pyplot as plt

class Resizer():
    def __init__(self,fig=None):
        if not fig: fig=plt.gcf()
        self.fig=fig
        self.w, self.h = self.fig.get_size_inches()
        self.l = self.fig.subplotpars.left
        self.r = self.fig.subplotpars.right
        self.t = self.fig.subplotpars.top
        self.b = self.fig.subplotpars.bottom

    def set_figsize(self, figw,figh):  
        hor = 1.-self.w/float(figw)*(self.r-self.l)
        ver = 1.-self.h/float(figh)*(self.t-self.b)
        self.fig.subplots_adjust(left=hor/2., right=1.-hor/2., top=1.-ver/2., bottom=ver/2.)

    def resize(self, event):
        figw = event.width/self.fig.dpi
        figh = event.height/self.fig.dpi
        self.set_figsize( figw,figh)

fig, ax=plt.subplots()

ax.plot([1,3,2])

r = Resizer()
cid = fig.canvas.mpl_connect("resize_event", r.resize)

plt.show()

enter image description here

答案 1 :(得分:0)

在matplotlib图的窗口中,有一个名为“Configure subplots”的按钮(见下图,Windows 10上的截图,matplotlib版本1.5.2)。尝试更改参数'left'和'right'。您还可以使用plt.subplots_adjust(left=..., bottom=..., right=..., top=..., wspace=..., hspace=...)更改这些参数。

enter image description here