library(ggplot2)
iris$Sepal.Length2 <- ifelse(iris$Sepal.Length < 5, 1, 0)
iris$Sepal.Width2 <- ifelse(iris$Sepal.Width < 3, 1, 0)
SmallLength <- data.frame(Petal.Length = iris$Petal.Length[iris$Sepal.Length2 == 1],
status = "Small Length")
LargeLength <- data.frame(Petal.Length = iris$Petal.Length[iris$Sepal.Length2 == 0],
status = "Large Length")
SmallWidth <- data.frame(Petal.Length = iris$Petal.Length[iris$Sepal.Width2 == 1],
status = "Small Width")
LargeWidth <- data.frame(Petal.Length = iris$Petal.Length[iris$Sepal.Width2 == 0],
status = "Large Width")
Length <- rbind(SmallLength, LargeLength)
Width <- rbind(SmallWidth, LargeWidth)
ggplot(Length, aes(Petal.Length, fill = status)) + geom_density(alpha = 0.2) + labs(x = "Petal Length")
我有一个连续变量
Petal.Length
,我想通过Sepal.Length
和Sepal.Width
对其进行分层,它们都已编码为二进制变量。在上图中,我仅按Petal.Length
分层了Sepal.Length
。如何通过Sepal.Width
对其进一步分层?我认为生成的图应该具有4种颜色...对于长度和宽度较小的Petal.Length
,为1;对于长度和宽度较大,为1;对于长度和宽度较小,为1;对于长度和宽度较大,为1。 最佳答案
这是一个使用管道的示例-按原样使用数据,您将需要长度和重量data.frames。
library(tidyverse)
iris %>%
mutate(statusl = factor(ifelse(Sepal.Length<5,'Small length', 'Large length')),
statusw = factor(ifelse(Sepal.Width<3,'Small width', 'Large width'))) %>%
ggplot(aes(Petal.Length, fill=interaction(statusl, statusw))) +
geom_density(alpha = 0.2) + xlab("Petal Length")
关于r - R:在ggplot中按2个因子变量分层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43175142/