ggplot汇总y轴上分类变量的平均值

问题描述 投票:0回答:1

我正在尝试复制我在此Kaggle笔记本中找到的Python图:Titanic Data Science Solutions

这是生成绘图的python代码,使用的数据集可以找到here

grid = sns.FacetGrid(train_df, row='Embarked', size=2.2, aspect=1.6)
grid.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep')
grid.add_legend()

这里是resulting plot

生存列的取值为0和1(生存或不生存),并且y轴显示每个p类的平均值。当寻找一种使用ggplot计算平均值的方法时,我通常会找到stat_summary()函数。我能做的最好的是:

train_df %>%
  ggplot(aes(x = factor(Pclass), y = Survived, group = Sex, colour = Sex)) +
  stat_summary(fun.y = mean, geom = "line") +
  facet_grid(Embarked ~ .)

输出可以找到here。有一些问题:-好像是空洞的,也许来自《登船》中的NA?-点与线不对齐-这些线与python图中的线不同

我想我也没有完全掌握ggplot的分层概念。我想在geom = "line"函数中将stat_summary()分开,而是将其添加为+ geom_line()

python r ggplot2 seaborn
1个回答
0
投票
""中实际上有一个空白级别(即train_df$Embarked)。您可以在绘图之前将其过滤掉。

train_df https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')train_df

ggplot(train_df, aes(x = factor(Pclass), y = Survived, group = Sex, colour = Sex)) + stat_summary(fun.data = 'mean_cl_boot') + geom_line(stat = 'summary', fun.y = mean) + facet_grid(Embarked ~ .)

您可以使用stat_summary通过绘制置信区间来复制python图。尽管您对stat_summary的支持很棒,但我已按照您的要求将其重写为geom_line调用。

[请注意,您的ggplot代码不会绘制任何点,因此我无法回答该部分,但是可能您所绘制的原始值只是许多0和1。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.