我最近不得不重新安装操作系统,并决定切换到Python3。随之而来的是我的IDE PyCharm的更新,大概还有Matplotlib的更新。
运行以前运行良好的脚本,现在给我带来难看的结果,并且子图的标题重叠。
这是示例代码:
import numpy as np
import matplotlib.pyplot as plt
z = np.random.uniform(low=0, high=100, size=(20,4))
fig, axes = plt.subplots(2, 2, constrained_layout=True, sharey=True, sharex=True)
axes[-1, 0].set_xlabel('.\n', color=(0, 0, 0, 0))
axes[-1, 0].set_ylabel('.\n', color=(0, 0, 0, 0))
for s_plot, ax in enumerate(axes.flat):
ax.scatter(x=range(20), y=z[:,s_plot])
fig.suptitle("The Title\nSecond Line\n", fontsize=12)
plt.show()
我尝试将constrained_layout
设置为False
,并尝试了subplots_adjust
,但是它并没有改变我的绘图布局。
我当前正在使用matplotlib 3.0.2。我错过了重大变化吗?我对如何解决这个问题感到困惑。
答案 0 :(得分:2)
使用matplotlib 3.0.2,图将如下所示
两个结果都是预期的。在使用constrained_layout
的情况下,标题出现偏离中心,这是因为标签所使用的子图的左侧空间比右侧空间大。
答案 1 :(得分:0)
我也认为这是pycharm的问题。因此,例如,当我在此标准matplotlib脚本中运行代码时: https://matplotlib.org/3.1.1/gallery/subplots_axes_and_figures/figure_title.html
但是,标题和字幕在保存为png时不会重叠。
我提出了pycharm的问题,希望可以解决此问题: https://youtrack.jetbrains.com/issue/PY-42545
同时,我建议拆分您的编辑器屏幕以显示.png文件,您可以在每次运行代码时使用CTRL + ALT + Y刷新该文件。