底部图表重叠了顶部图表的标签。

16 浏览
0 Comments

底部图表重叠了顶部图表的标签。

问题是什么?顶部图表的标签在底部图表下面...我真的无法想象如何修复这个问题。我以为它会正常工作。

下面的代码来自网站http://www.physics.nyu.edu/pine/pymanual/html/chap5/chap5_plot.html#basic-plotting

图表的正确显示示例在链接http://www.physics.nyu.edu/pine/pymanual/html/_images/subplotDemo.png中。

从上述网站复制代码生成的图表在链接我的重叠图表中。

import numpy as np
import matplotlib.pyplot as plt
theta = np.arange(0.01, 8., 0.04)
y = np.sqrt((8./theta)**2-1.)
ytan = np.tan(theta)
ytan = np.ma.masked_where(np.abs(ytan)>20., ytan)
ycot = 1./np.tan(theta)
ycot = np.ma.masked_where(np.abs(ycot)>20., ycot)
plt.figure(1)
plt.subplot(2, 1, 1)
plt.plot(theta, y)
plt.plot(theta, ytan)
plt.ylim(-8, 8)
plt.axhline(color="gray", zorder=-1)
plt.axvline(x=np.pi/2., color="gray", linestyle='--', zorder=-1)
plt.axvline(x=3.*np.pi/2., color="gray", linestyle='--', zorder=-1)
plt.axvline(x=5.*np.pi/2., color="gray", linestyle='--', zorder=-1)
plt.xlabel("theta")
plt.ylabel("tan(theta)")
plt.subplot(2, 1, 2)
plt.plot(theta, -y)
plt.plot(theta, ycot)
plt.ylim(-8, 8)
plt.axhline(color="gray", zorder=-1)
plt.axvline(x=np.pi, color="gray", linestyle='--', zorder=-1)
plt.axvline(x=2.*np.pi, color="gray", linestyle='--', zorder=-1)
plt.xlabel("theta")
plt.ylabel("cot(theta)")
plt.show()

0
0 Comments

问题出现的原因是底部图形的标签与顶部图形的标签重叠。解决方法是在显示图形之前插入一行代码plt.tight_layout()。这行代码将自动调整子图之间的边距,使一切看起来很好。在代码中应该像这样写:

plt.tight_layout()
plt.show()

有关tight_layout的更多信息可以在这里找到:紧凑布局指南

它完美地解决了问题!谢谢!

你知道其他解决方案吗?

是的,你可以使用subplots_adjust来更具体地自定义间距。这里有更多信息:sublots_adjust

0