编辑
我终于解决了这个问题,事实证明这全是PyCharm中SciView功能的错误,但是将图像保存为@Bazingaa建议并添加了两个解决方案,即constrained_layout
或{{1} }已为我解决了该问题,因此可以关闭该问题。
谢谢大家的帮助:)
问题
我知道之前曾问过这个问题,例如here和here。但是,由于某种原因,到目前为止,所提供的解决方案都没有对我有用。
我有一个带有两个子图的图,每个子图都有自己的标题,而图也有标题。问题在于图形的标题与轴的标题重叠。
这是示例代码:
tight_layout
如您所见,我已经在使用import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2, figsize=(8, 3))
# fig, ax = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)
data = np.random.normal(0, 1, 100)
fig.suptitle('Comparison of distribution in different pieces')
ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
edgecolor='k')
ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
edgecolor='k')
plt.tight_layout()
plt.show()
,并且尝试使用plt.tight_layout()
来增加上边距,并且还将图形上的plt.adjust_subplots()
参数设置为{{1} },但是无论我如何更改这些函数的参数,甚至不调用它们中的任何一个,我都能得到完全相同的图像。
这里是output image。
此外,由于我还是matplotlib的新手,因此对此代码的任何建议或更正将不胜感激。
P.S。感谢@Bazingaa让我以他的代码为我的问题的示例。
答案 0 :(得分:2)
您可以使用suptitle
关键字为主要标题(y
)指定y位置。下面是一个示例答案。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2, figsize=(8, 3)) # specify figsize later
data = np.random.normal(0, 1, 100)
fig.suptitle('Comparison of distribution in different pieces', y=1.05)
ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
edgecolor='k')
ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
edgecolor='k')
plt.tight_layout()
plt.show()
答案 1 :(得分:0)
您可以使用tight_layout()
关键字来减少rect
用于顶部子图的空间,例如:
plt.tight_layout(rect=[0, 0, 0, .95])
答案 2 :(得分:0)
编辑:糟糕,抱歉,没有阅读您的更新。
这对我有用:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)
data = np.random.normal(0, 1, 100)
fig.suptitle('Comparison of distribution in different pieces')
ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
edgecolor='k')
ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
edgecolor='k')
plt.show()