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上运行此问题。
#1 楼
使用:import matplotlib.pyplot as plt
plt.gcf().subplots_adjust(bottom=0.15)
为标签腾出空间。
编辑:
由于我给出了答案,
matplotlib
添加了tight_layout()
函数。所以我建议使用它:
plt.tight_layout()
应该为xlabel腾出空间。
评论
我觉得很奇怪,一个人需要打个电话,为情节的重要部分腾出空间。这背后的原因是什么?
–另一本
2012年4月9日在8:09
出于好奇,为什么要使用gcf()。subplots_adjust而不是plt.subplots_adjust?有区别吗?
–瞻博网络-
2013年6月6日14:25
什么是gcf和gca?您忽略了解释!
–上校恐慌
2014年6月6日11:21
我遇到了同样的问题,尽管tight_layout()确实修复了xlabels的截止点,但不幸的是,它导致了我的ylabel被截止(之前没有被截止)。但是,第一个方法(subplots_adjust(bottom = 0.25))效果很好。谢谢。
– Scott H
2014年9月19日下午16:20
@ColonelPanic gcf()和gca()分别是“获取当前图形”和“获取当前轴”。
– DrMisha
15年6月8日在18:23
#2 楼
一个简单的选项是将matplotlib配置为自动调整绘图大小。它对我来说效果很好,我不确定为什么默认情况下未激活它。方法1
在您的matplotlibrc文件中设置它
figure.autolayout : True
有关自定义matplotlibrc文件的更多信息,请参见此处:http://matplotlib.org/users/customizing.html
方法2
在运行时像这样更新rcParams
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})
使用此方法的优点是,您的代码将在配置不同的计算机上生成相同的图形。
评论
使用此选项时,我对色条太大有一些问题。此处讨论一种可能的解决方案:matplotlib.org/users/tight_layout_guide.html
– PiQuer
13年7月22日在14:47
当我设置自定义(大字体!)字体大小时,tight_layout使事情变得一团糟。这做得更好。
– BenB
16年9月9日在21:17
在pgf后端和LaTeX一起使用时,更新rcParams确实是唯一对我有用的方法。 (即使它使图呈矩形,我也不介意)
– h4nek
20年5月14日在22:18
只有这个对我有用;没有tight_layout或box_inches有效
–zed111
20年6月16日在21:17
#3 楼
如果要将其存储到文件中,请使用bbox_inches="tight"
参数解决它:plt.savefig('myfile.png', bbox_inches = "tight")
评论
@Guido保存了一天
– pcko1
20年4月6日在21:06
到目前为止,这是适当解决问题的唯一答案。无需修改数字,只是用plt.savefig的一个合适的选项,使其明白保存。
–纪尧姆·加里戈斯(Guillaume Garrigos)
20/07/23在12:55
#4 楼
plt.autoscale()
为我工作。#5 楼
将plot.tight_layout()
放在图形上的所有更改之后,show()
或savefig()
之前即可解决此问题。评论
这不会为图的底部留出空间,而是会重新缩放整个图,这在某些情况下(例如我的情况)可能会使图看起来很奇怪。
– 89f3a1c
19年9月24日在13:16
#6 楼
您还可以在$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
...
#7 楼
由于某种原因,sharex设置为True,所以我将其重新设置为False,它可以正常工作。df.plot(........,sharex=False)
评论
您可以在图像托管网站上发布并在此处链接。如果您可以发布触发此问题的简约示例代码,则将有帮助。这样,人们可以更快地理解和重现您的问题,他们将更有可能为您提供帮助。
您的代码在我的机器(ubuntu 11.04 64bit)上运行正常(显示完全可见的公式)。也许是机器特定的问题(例如,图像中使用了带有错误尺寸信息的字体?)。您也许可以指定问题中使用的系统。
您可能还需要尝试plt.savefig(“ test.png”,bbox_inches ='tight'):stackoverflow.com/questions/21288062/…