我正在尝试创建此数据的RidgePlot:
long_data <- structure(list(Cell_Type = structure(c(1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L,
10L, 10L, 10L), .Label = c("CD4..T.cells", "CD4..Tcm", "CD8..Tcm",
"CD8..Tem", "Class.switched.memory.B.cells", "Monocytes", "MPP",
"naive.B.cells", "NK.cells", "Plasma.cells"), class = "factor"),
Sample = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L), .Label = c("Sample1", "Sample2", "Sample3", "Sample4"
), class = "factor"), Percentage = c(39, 35.1, 12.7405962,
4.995628, 11.4, 10.9, 8.9116355, 10.1955, 4.5, 6.1, 18.2643388,
7.005608, 5.9, 6, 4.9746425, 10.288099, 2.8, 2.8, 13.7408777,
19.657708, 18.8, 21.4, 5.7131852, 19.657708, 0.6, 0.8, 0.2308895,
18.295758, 7, 6.2, 7.210278, 3.383666, 9.9, 9.8, 16.9838566,
9.087761, 0.1, 1, 11.2297, 10.511573), outlier = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L), .Label = c("no", "yes"
), class = "factor")), class = "data.frame", row.names = c(NA,
-40L))列异常值是两个级别的因子"yes“和"no”,但当我创建ggplot时,它完全忽略了所有行,其中"yes“表示异常值。
这是我得到的ggplot的一个例子。

我似乎遗漏了一些东西,因为预期的输出是一个带有"no“和"yes”的图例,以及具有两种不同颜色的点。
下面是生成它的代码:
ggplot(long_data, aes(x=Percentage, y=reorder(Cell_Type,Percentage))) +
geom_density_ridges(scale=2, alpha=0.2)+
geom_density_ridges(alpha=0, color=NA, jittered_points=T, point_alpha=1, aes(point_color=outlier)) +
xlab("Percentage") + ylab("Cell Type") 这里我漏掉了什么?
发布于 2020-11-18 05:59:48
尽管没有编写,但geom_density_ridges以某种方式假定point_color将与填充同步,例如,如果我们使用虹膜,您可以看到它变成了您不想要的东西:
dat = iris
dat$new = factor(sample(1:2,nrow(iris),replace=TRUE))
ggplot(dat,aes(x=Sepal.Length, y=Species, fill = Species)) +
geom_density_ridges(aes(point_color = new), alpha = .2, jittered_points = TRUE)

如果你不需要图例并且只有两种颜色,你可以使用@markhogue建议的解决方案。
尝试如下所示:
ggplot(long_data, aes(x=Percentage, y=reorder(Cell_Type,Percentage))) +
geom_density_ridges(scale=2, alpha=0.2)+
geom_point(aes(col=outlier))

如果你想抖动:
ggplot(long_data, aes(x=Percentage, y=reorder(Cell_Type,Percentage))) +
geom_density_ridges(scale=2, alpha=0.2)+
geom_jitter(aes(col=outlier),position = position_jitter(height = 0.1))

https://stackoverflow.com/questions/64883153
复制相似问题