DSG*_*DSG 5 python boxplot pandas seaborn
%matplotlib inline
fig, axes = plt.subplots(nrows=2, ncols=4)
m = 0
l = 0
for i in k:
if l == 4 and m==0:
m+=1
l = 0
data1[i].plot(kind = 'box', ax=axes[m,l], figsize = (12,5))
l+=1
Run Code Online (Sandbox Code Playgroud)
这会根据需要输出子图.

但是当试图通过seaborn实现它时,子图堆叠彼此靠近,我如何改变每个子图的大小?
fig, axes = plt.subplots(nrows=2, ncols=4)
m = 0
l = 0
plt.figure(figsize=(12,5))
for i in k:
if l == 4 and m==0:
m+=1
l = 0
sns.boxplot(x= data1[i], orient='v' , ax=axes[m,l])
l+=1
Run Code Online (Sandbox Code Playgroud)

Ted*_*rou 11
您的调用plt.figure(figsize=(12,5))是创建一个与您fig从第一步已经声明的不同的新空图.将figsize通话设置为plt.subplots.由于您没有设置,因此在您的绘图中默认为(6,4).您已经创建了数字并已分配给变量fig.如果你想对这个数字采取行动,你应该做的fig.set_size_inches(12, 5)就是改变大小.
然后你可以简单地打电话fig.tight_layout()让情节很好地适应.
此外,通过flatten在axes对象数组上使用,可以更轻松地迭代轴.我也直接使用seaborn本身的数据.
# I first grab some data from seaborn and make an extra column so that there
# are exactly 8 columns for our 8 axes
data = sns.load_dataset('car_crashes')
data = data.drop('abbrev', axis=1)
data['total2'] = data['total'] * 2
# Set figsize here
fig, axes = plt.subplots(nrows=2, ncols=4, figsize=(12,5))
# if you didn't set the figsize above you can do the following
# fig.set_size_inches(12, 5)
# flatten axes for easy iterating
for i, ax in enumerate(axes.flatten()):
sns.boxplot(x= data.iloc[:, i], orient='v' , ax=ax)
fig.tight_layout()
Run Code Online (Sandbox Code Playgroud)
没有这些tight_layout地块被轻微粉碎在一起.见下文.
| 归档时间: |
|
| 查看次数: |
5474 次 |
| 最近记录: |