为了账号安全,请及时绑定邮箱和手机立即绑定

用seaborn FacetGrid映射两个子图

用seaborn FacetGrid映射两个子图

GCT1015 2021-03-31 18:15:30
我正在尝试并排生成两个seaborn核密度图(kdeplot)。这里使用了三个功能(社区学校?,经济需求指数,学校收入估算)。唯一的分类功能“社区学校?” 以代表其级别的绿蓝色显示。“经济需求指数”和“学校收入估算”分别适用于两个kdeplots。使用下面显示的代码创建的图像是我可以获得的最佳结果,但是存在问题。1)第二个图的y轴比例是错误的(应该像第一个图一样是一些整数比例)校正:kdeplot是规范的(所有的总和等于1),因此y轴在x值的情况下是正确的。2)在两个图的下方产生一个额外的轴(?)3)我想为每个子图添加一个标题我发现kdeplot不支持,hue因此我尝试使其与一起使用FacetGrid。不知道这是否是正确的方法。如果提供了更好的方法,将不胜感激。fig, (ax1, ax2) = plt.subplots(1, 2)fig.subplots_adjust(wspace=.8)fg = sns.FacetGrid(df, hue='Community School?', size=3)fg.map(sns.kdeplot, 'Economic Need Index', shade=True, ax=ax1, label='Economic Need Index')fg.map(sns.kdeplot, 'School Income Estimate', shade=True, ax=ax2, label='School Income Estimate')plt.show()
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

您会得到更多的数字,因为FacetGrid在调用时会自动打开其自己的窗口。有关更多详细信息,请参见此问题的答案。因此,这里是一种更简单的方法。我添加了两条可选行,用每种学校的均值替换NaN。


s = df.groupby(['Community School?'])['School Income Estimate'].transform('mean')

df['School Income Estimate'].fillna(s, inplace=True)


plt.subplots(1, 2)

plt.subplot(1, 2, 1)

a = sns.kdeplot(df.loc[df['Community School?'] == 'No', 'Economic Need Index'], shade=True, label='No')

b = sns.kdeplot(df.loc[df['Community School?'] == 'Yes', 'Economic Need Index'], color= 'red', shade=True, label='Yes')

plt.title('KDE of Economic Need Index')

plt.subplot(1, 2, 2)

c = sns.kdeplot(df.loc[df['Community School?'] == 'No', 'School Income Estimate'], shade=True, label='No')

d = sns.kdeplot(df.loc[df['Community School?'] == 'Yes', 'School Income Estimate'], color= 'red', shade=True, label='Yes')

plt.title('KDE of School Income Estimate')

//img1.sycdn.imooc.com//607ea3eb00016fd213040622.jpg

查看完整回答
反对 回复 2021-04-20
  • 3 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号