如何减小海洋箱形图的箱形尺寸并使图形适应新的箱形尺寸?

时间:2020-01-12 13:28:04

标签: python python-3.x matplotlib seaborn

我用图像下方显示的代码创建了下图。我希望这些盒子在水平方向上更薄,整个外形都可以适应新的盒子尺寸。我该怎么办?

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

enter image description here

def plotBoxPlotDataMAE(self,data,figName):        
    df = pd.DataFrame(data).T
    df = df.rename(columns={0:'Joint 1',1:'Joint 2',2:'Joint 3',3:'Average'})
    f = plt.figure(figName,figsize=[5.3,6])
    ax = f.add_subplot(111)
    obj = sns.boxplot(data=df)
    obj.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')

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

1 个答案:

答案 0 :(得分:2)

根据轴的大小确定框的大小,轴的大小取决于图形的大小。因此,要获得具有更薄盒子的更瘦身材,您需要更改身材尺寸。

您已经注意到,这会在轴和刻度标签上造成问题,但是使用@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()

enter image description here