问题:为什么在matplotlib图中我的xlabel被截断了?
我正在使用matplotlib
具有“很高”的xlabel的位置绘制数据集(这是在TeX中渲染的公式,其中包含一个分数,因此其高度等于几行文本)。
无论如何,当我绘制数字时,公式的底部总是被切除。更改图形大小似乎无济于事,而且我还无法弄清楚如何将x轴“向上”移动以为xlabel腾出空间。诸如此类的东西是一个合理的临时解决方案,但最好的办法是使matplotlib自动识别标签已被剪切并相应地调整大小。
这是我的意思的示例:
import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')
plt.show()
虽然您可以看到整个ylabel,但xlabel在底部被切除了。
如果这是机器特定的问题,我将在带有matplotlib 1.0.0的OSX 10.6.8上运行此问题
回答 0
采用:
import matplotlib.pyplot as plt
plt.gcf().subplots_adjust(bottom=0.15)
为标签腾出空间。
编辑:
自从我给出答案以来,matplotlib
增加了tight_layout()
功能。所以我建议使用它:
plt.tight_layout()
应该为xlabel腾出空间。
回答 1
一个简单的选项是将matplotlib配置为自动调整绘图大小。它非常适合我,我不确定为什么默认情况下未激活它。
方法一
在您的matplotlibrc文件中进行设置
figure.autolayout : True
有关自定义matplotlibrc文件的更多信息,请参见此处:http : //matplotlib.org/users/customizing.html
方法2
像这样在运行时更新rcParams
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})
使用这种方法的优点是您的代码将在配置不同的计算机上生成相同的图形。
回答 2
如果要将其存储到文件中,可以使用bbox_inches="tight"
参数来解决:
plt.savefig('myfile.png', bbox_inches = "tight")
回答 3
将plot.tight_layout()
所有更改放在图表上,show()
或savefig()
将解决问题。
回答 4
plt.autoscale()
为我工作。
回答 5
您还可以$HOME/.matplotlib/matplotlib_rc
按照以下方式将自定义填充设置为默认值。在下面的示例中,我同时修改了底部和左侧的填充:
# The figure subplot parameters. All dimensions are a fraction of the
# figure width or height
figure.subplot.left : 0.1 #left side of the subplots of the figure
#figure.subplot.right : 0.9
figure.subplot.bottom : 0.15
...