我正在生成用于观察的密度图。这些观察属于一个物种,其中一些也与个人ID有关。
有了下面的数据,我想为物种1和物种2的每个级别的IndID生成一行,并且只为物种3生成一行,这不包括IndID。There are related questions on SO,但不使用可重现的数据,并寻找不同的结果。
library(ggplot2)
set.seed(1)
dat <- data.frame(Species = c(rep(c("One", "Two"), each = 2, length = 30), rep("Three",50)),
IndID = c(rep(letters[1:5],each = 6),rep(NA,50) ),
Value = sample(1:20, replace = T))在物种级别上保持禁欲的颜色,我想为物种一和物种二(绿色和红色)创建多条线,并为物种三创建一条蓝色线。
ggplot(dat, aes(Value)) + geom_density(aes(color = Species), size = 1.25) +
scale_colour_manual(values = c("darkgreen","blue", "red"))

发布于 2017-03-04 02:40:23
如果您希望能够区分它们,可以将linetype设置为IndID。但是请注意,您需要将NA更改为其他值,以便(轻松地)将其绘制出来。
我还对您的数据进行了一点扩展,为每个人提供了足够的值来显示有意义的行。我还使用了geom_line(stat = "density")而不是geom_density(),因为它省略了底部的线条,并提供了带有线条而不是方框的图例。
set.seed(1)
dat <- data.frame(Species = c(rep(c("One", "Two"), each = 2, length = 60), rep("Three",50)),
IndID = c(rep(letters[1:5],each = 12),rep("NA",50) ),
Value = sample(1:20, 110, replace = T))
ggplot(dat
, aes(x = Value
, color = Species
, linetype = IndID)) +
geom_line(stat = "density"
, size = 1.25) +
scale_colour_manual(values = c("darkgreen","blue", "red"))给出

如果您希望所有行都是实线,您可以运行:
ggplot(dat
, aes(x = Value
, color = Species
, linetype = IndID)) +
geom_line(stat = "density"
, size = 1.25) +
scale_colour_manual(values = c("darkgreen","blue", "red")) +
scale_linetype_manual(values = rep("solid", 6)) +
guides(linetype = "none")(或者像@Henrik在zir评论中建议的那样使用group )
https://stackoverflow.com/questions/42585629
复制相似问题