我试图在一个数据集的两个不同的方面用不同的颜色生成两个不同的几何线。我这样做是为了突出两个不同方面的平均值。
数据集如下:
Pclass Sex Age SibSp Parch Fare Cabin Embarked Survived
3 male 22 1 0 7.25 S 0
1 female 38 1 0 71.2833 C85 C 1
3 female 26 0 0 7.925 S 1
1 female 35 1 0 53.1 C123 S 1
3 male 35 0 0 8.05 S 0
1 male 54 0 0 51.8625 E46 S 0
下面是代码:
g<-ggplot(data = train3, aes(x = Age, y = Survived, colour = factor(Pclass)))
g<-g+facet_wrap(~Sex)
g<-g+geom_point(size = 4, alpha = 0.2)+ggtitle("Survival by Gender")+theme(plot.title = element_text(hjust = 0.5))
g<-g+geom_vline(data = subset(train3,Sex=="female"), xintercept = mean(train3[which(train3$Sex=="female"),3]), colour = "pink", size = 1)
g<-g+geom_vline(data = subset(train3,Sex=="male"), xintercept = mean(train3[which(train3$Sex=="male"),3]), colour = "blue", size = 1)
g
下面是输出
实际上,我只想在每个面中生成1条vline:雌性为粉红色,雄性为蓝色。
给定的建议here也不起作用。显示的错误为:
Error in .(Sex == "female") : could not find function "."
3条答案
按热度按时间ikfrs5lh1#
以下是如何为不同的虹膜种类输入不同的
geom_vline
:fcg9iug32#
您可以创建一个data.frame,其中一列是用于行的截距值,第二列是Sex。这样,当使用facet_wrap时,它们是分开的。
比如:
然后可以在脚本中使用它:
没有你的数据我无法测试。
[EDIT:With a reprex]如果我使用与Adam Quek相同的数据作为可重现的示例,代码将自动执行如下:
ajsxfq5m3#
根据“塞巴斯蒂安·罗切特”上面的回答;与其使用summary(Int = mean(Age))函数创建新的数据框dataInt,不如使用mutate函数,因为我在每个方面图中都有多个水平,所以该函数对我不起作用。
然后您可以使用train 3 Dataframe
这是可行的,但我担心它可能为所有值创建了一个geom_vline,因为每个平均值将在数据框中每个因子的每个水平内重复。