Python 如何缩小seaborn箱型图的箱型尺寸,使图形适应新的箱型尺寸?

Python 如何缩小seaborn箱型图的箱型尺寸,使图形适应新的箱型尺寸?,python,python-3.x,matplotlib,seaborn,Python,Python 3.x,Matplotlib,Seaborn,我用下图所示的代码创建了下图。我希望盒子在水平方向上更薄,整个图形能够适应新的盒子尺寸。我该怎么做 我知道我可以使用sns.boxplot(data=df,width=someScalingFactor)更改框的宽度,但这会在水平方向的框之间创建一个空间,这不是我想要的 def plotBoxPlotDataMAE(self、data、figName): df=pd.DataFrame(data).T 重命名(列={0:'Joint 1',1:'Joint 2',2:'Joint 3',3:'

我用下图所示的代码创建了下图。我希望盒子在水平方向上更薄,整个图形能够适应新的盒子尺寸。我该怎么做

我知道我可以使用
sns.boxplot(data=df,width=someScalingFactor)
更改框的宽度,但这会在水平方向的框之间创建一个空间,这不是我想要的

def plotBoxPlotDataMAE(self、data、figName):
df=pd.DataFrame(data).T
重命名(列={0:'Joint 1',1:'Joint 2',2:'Joint 3',3:'Average'})
f=plt.图(figName,figsize=[5.3,6])
ax=f.add_子批次(111)
obj=sns.boxplot(数据=df)
对象集_ylabel(ylabel=”平均绝对角度误差[°”,fontsize=13)
plt.tick_参数(axis='y',which='both',labelleft='on',labelright='on')
ax.yaxis.set\u ticks\u位置('both'))

最终,我希望图形更薄,因为方框较大,不会向绘图中添加信息,并且我在文档中没有太多空间使用它们。

方框的大小是根据轴的大小确定的,这取决于图形的大小。因此,要使用更薄的方框获得更薄的图形,您需要更改图形的大小

正如您所注意到的,这会给轴和记号标签带来问题,但正如@JohanC所指出的,使用
tight_layout()
很容易解决这个问题

完整代码:

f = plt.figure(figsize=[2,6])
ax = f.add_subplot(111)
sns.boxplot(data=df, ax=ax)
ax.set_ylabel(ylabel='Mean Absolute Angle Error [°]',fontsize=13)
plt.tick_params(axis='y',which='both',labelleft='on',labelright='on')
ax.yaxis.set_ticks_position('both')
plt.setp(ax.get_xticklabels(), rotation=90)
f.tight_layout()

框的大小取决于轴的大小,轴的大小取决于图形的大小。因此,要使用更薄的框获得更薄的图形,您需要更改图形大小

正如您所注意到的,这会给轴和记号标签带来问题,但正如@JohanC所指出的,使用
tight_layout()
很容易解决这个问题

完整代码:

f = plt.figure(figsize=[2,6])
ax = f.add_subplot(111)
sns.boxplot(data=df, ax=ax)
ax.set_ylabel(ylabel='Mean Absolute Angle Error [°]',fontsize=13)
plt.tick_params(axis='y',which='both',labelleft='on',labelright='on')
ax.yaxis.set_ticks_position('both')
plt.setp(ax.get_xticklabels(), rotation=90)
f.tight_layout()

为什么不在调用
plt.figure
时通过设置一个更薄的
figsize
来制作一个更薄的图形呢?如果我将
figsize
缩小,那么y轴的标签将消失。如果更改figsize并且某些部分不可见,则可以使用类似的方法调整边框间距。或者,为什么不在调用
plt.figure
时通过设置一个更薄的
figsize
来制作一个更薄的图形呢?如果我将
figsize
设置得更小,那么y轴的标签就会消失。如果更改figsize并且某些部分不可见,则可以使用类似的方法调整边框间距。或