我的图表最终看起来像这样:
我使用了原始的泰坦尼克号数据集,切分了一些列,并通过以下代码创建了一个新的数据框。
Cabin_group = titanic[['Fare', 'Cabin', 'Survived']] #selecting certain columns from dataframe
Cabin_group.Cabin = Cabin_group.Cabin.str[0] #cleaning the Cabin column
Cabin_group = Cabin_group.groupby('Cabin', as_index =False).Survived.mean()
Cabin_group.drop([6,7], inplace = True) #drop Cabin G and T as instances are too low
Cabin_group['Status']= ('Poor', 'Rich', 'Rich', 'Medium', 'Medium', 'Poor') #giving each Cabin a status value.
所以我的新数据框`Cabin_group'最终看起来像这样:
Cabin Survived Status
0 A 0.454545 Poor
1 B 0.676923 Rich
2 C 0.574468 Rich
3 D 0.652174 Medium
4 E 0.682927 Medium
5 F 0.523810 Poor
我试图绘制这个数据框,方法如下:
fig = plt.subplots(1,1, figsize = (10,4))
sns.barplot(x ='Cabin', y='Survived', hue ='Status', data = Cabin_group )
plt.show()
这个图表有几个问题;首先,柱形图A、D、E和F与它们各自的x轴标签不对齐。其次,柱形本身似乎比我通常使用的柱形图更窄。
不知道如何将柱子移动到正确的位置,以及如何控制柱子的宽度。
谢谢。
hue='Status'
时,seaborn会添加足够的空间来容纳每个x位置上'Status'的每个唯一值的条形图。数据不足以填充所有内容的事实表明这可能不是最佳方法。 - Paul Hhue
变量未嵌套在x
变量内时,您可以使用dodge=False
。 - mwaskom