データセットの2つの異なるファセットで異なる色の2つの異なるgeom_vlinesを生成しようとしています。私はこれを2つの異なる側面の手段を強調するために行っています。
これがデータセットです:
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のみを作成したいと思います。女性のピンクと男性のブルーです。
提案Give here も機能しません。示されているエラー:
Error in .(Sex == "female") : could not find function "."
これは、異なるgeom_vline
異なるアイリス種の場合:
ggplot(iris, aes(Sepal.Length, Petal.Length)) + facet_wrap(~Species, scales="free") + geom_point() +
geom_vline(data=filter(iris, Species=="setosa"), aes(xintercept=5), colour="pink") +
geom_vline(data=filter(iris, Species=="versicolor"), aes(xintercept=6), colour="blue") +
geom_hline(data=filter(iris, Species=="virginica"), aes(yintercept=6), colour="green")
1つの列が行に使用される切片値であり、2番目の列がSexであるdata.frameを作成できます。そのため、facet_wrapを使用する場合、それらは分離されます。
何かのようなもの:
dataInt <- train3 %>%
group_by(Sex) %>%
summarize(Int = mean(Age))
その後、スクリプトで使用できます。
g<-ggplot(data = train3, aes(x = Age, y = Survived, colour = factor(Pclass))) +
facet_wrap(~Sex) +
geom_vline(data=dataInt, xintercept=Int)
あなたのデータなしでは、これをテストすることはできません。
上記の@SébastienRochetteの回答に基づいて作成。各ファセットプロット内に複数のレベルがあったため機能しなかった関数summary(Int = mean(Age))で新しいデータフレームdataIntを作成するのではなく、代わりにmutateを使用します。
train3 <- train3 %>%
group_by(Sex) %>%
mutate(Int = mean(Age))
そして、あなたはtrain3データフレームを使用することができます
g<-ggplot(data = train3, aes(x = Age, y = Survived, colour = factor(Pclass))) +
facet_wrap(~Sex) +
geom_vline(data=train3, xintercept=Int)
これは機能しますが、データフレーム内の各因子の各レベル内で各平均が繰り返されるため、すべての値に対してgeom_vlineが作成されたのではないかと心配しています。