自Matplotlib

时间:2019-02-12 16:18:06

标签: python matplotlib subplot

我最近不得不重新安装操作系统,并决定切换到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()

这将产生: enter image description here

我尝试将constrained_layout设置为False,并尝试了subplots_adjust,但是它并没有改变我的绘图布局。

我当前正在使用matplotlib 3.0.2。我错过了重大变化吗?我对如何解决这个问题感到困惑。

2 个答案:

答案 0 :(得分:2)

使用matplotlib 3.0.2,图将如下所示

使用constrained_layout=True enter image description here

使用constrained_layout=False enter image description here

两个结果都是预期的。在使用constrained_layout的情况下,标题出现偏离中心,这是因为标签所使用的子图的左侧空间比右侧空间大。

答案 1 :(得分:0)

我也认为这是pycharm的问题。因此,例如,当我在此标准matplotlib脚本中运行代码时: https://matplotlib.org/3.1.1/gallery/subplots_axes_and_figures/figure_title.html

我得到标题和字幕重叠的图像: enter image description here

但是,标题和字幕在保存为png时不会重叠。

我提出了pycharm的问题,希望可以解决此问题: https://youtrack.jetbrains.com/issue/PY-42545

同时,我建议拆分您的编辑器屏幕以显示.png文件,您可以在每次运行代码时使用CTRL + ALT + Y刷新该文件。