问题描述
我正在使用GUI进行绘图,该GUI的轴上方有一个长的图例手柄。图例比轴宽,因此我尝试使用fig.tight_layout()来扩展轴以匹配图例购买的宽度。
但是,我发现当调用ight_layout()时,这会减小轴的宽度,而不是像预期的那样填充图例下的空间。
这是我打电话给ight_layout()之前的身影。
并在调用ight_layout()之后。
令人惊讶的是,我发现每次调用tight_layout()之后,轴的宽度都会减小。当图例比轴宽时,调用ight_layout()是否有问题?当图例宽度小于数字时,不会发生这种情况。
这是用于复制人物和行为的代码。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# make dataframe with random data
np.random.seed(seed=7)
data1 = np.random.normal(size=100)
name1 = 'handle_with_a_really_really_really_really_long_name'
d = {name1: data1}
df = pd.DataFrame(data=d)
# plotting stuff
fig = plt.figure(figsize=(4,4))
ax = fig.add_subplot(111)
df.plot(ax=ax,kind='hist')
ax.legend(loc='lower left',bBox_to_anchor=(-0.04,1.05))
# tight layout calls to reduce axis width
#fig.tight_layout()
#fig.tight_layout()
#fig.tight_layout()
解决方法
轴试图使其自身足够小,以使其美术师没有与任何其他轴或图形边缘重叠。在这种情况下,无法采取任何措施使其自身变小到不会溢出图形的边缘,但是它一直在尝试。
您为什么要打电话给紧密布局?您可以从tight_layout leg=legend()
,leg.set_in_layout(False)
中删除图例,然后调用tight_layout
以获取正确的宽度,然后使用subplots_adjust
在顶部留出足够的空间。但是您也可以使标签的长度更合理。
多亏了乔迪的回应,我才意识到图例的尺寸要比数字大。这就是造成Jody所述的收缩轴的原因。
在这种情况下,解决方案是调整图形的大小,然后使用紧凑的布局。这样可以解决收缩轴的行为。