Matplotlib - 绘图大小,如何调整大小?

时间:2018-01-04 15:02:42

标签: python matplotlib

我正在尝试从我创建的情节中删除空白区域,请参阅下面的照片:

enter image description here

有可能看到,右侧和底部都有一个大的白点,如何修复它?,按照我的脚本进行操作:

fig = plt.figure(figsize=(7,7))


ax1 = plt.subplot2grid((4,3), (0,0),)
ax2 = plt.subplot2grid((4,3), (1,0),)
ax3 = plt.subplot2grid((4,3), (0,1),)
ax4 = plt.subplot2grid((4,3), (1,1),)

data = self.dframe[i]

tes = print_data(data, self.issues, self.color, self.type_user)

tes.print_top(data=data, top=10, ax=ax1, typegraph="hbar", problem=self.issues[i], tone=self.color[i])
tes.print_top(data=data, top=10, ax=ax2, typegraph="prod_bar", problem=self.issues[i], tone=self.color[i])
tes.print_top(data=data, top=10, ax=ax3, typegraph="reg_hbar", problem=self.issues[i], tone=self.color[i])
tes.print_top(data=data, top=10, ax=ax4, typegraph=self.type_user, problem=self.issues[i], tone=self.color[i])

problem = self.issues[i]
plt.tight_layout()
name = problem + str('.PNG')
plt.close(fig)
fig.savefig(name)

任何帮助都将受到高度赞赏

2 个答案:

答案 0 :(得分:4)

您正在创建太多的子图!

如果我们看一下这一行:

ax1 = plt.subplot2grid((4,3), (0,0),)

我们可以看到给subplot2grid的第一个参数是要制作的子图网格的尺寸,在这种情况下是4行和3列。然后,您将在图的左上角的子图中绘制(给出的第二个参数),这留下了很多未使用的空间。

因此,要解决此问题,请使用以下方法减少子图的数量:

ax1 = plt.subplot2grid((2,2), (0,0),)

完整示例:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.randn(25)

fig = plt.figure(figsize=(7,7))

ax1 = plt.subplot2grid((2,2), (0,0),)
ax2 = plt.subplot2grid((2,2), (1,0),)
ax3 = plt.subplot2grid((2,2), (0,1),)
ax4 = plt.subplot2grid((2,2), (1,1),)

ax1.plot(data)
ax2.plot(data)
ax3.plot(data)
ax4.plot(data)

plt.show()

,并提供:

enter image description here

答案 1 :(得分:1)

你可以用 plt.subplots_adjust(left=0.09, bottom=0.07, right=0.98, top=0.97, wspace=0.2 , hspace=0.17 )调整窗口。 但问题是你的情节中的很多空间都是空的 也许你应该改变 plt.subplot2grid((4,3) ...到plt.subplot2grid((2,2)