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")

r - R:在ggplot中按2个因子变量分层-LMLPHP

我有一个连续变量Petal.Length,我想通过Sepal.LengthSepal.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/

10-12 17:22