【发布时间】:2017-12-01 14:41:44
【问题描述】:
我正在尝试创建一个由 2 个直线密度和 2 个虚线密度组成的 ggplot。 2 个密度为蓝色,另外 2 个为红色。我的情节应该包括一个关于这些密度的颜色和线条的图例。
尽管我认为必须有一个简单的解决方案,但我无法在我的图例中生成虚线。我试图根据几个线程解决我的问题,例如here 或 here,但我的 ggplot 代码已经有点复杂,这些线程的示例以不同的方式使用 ggplot。因此,我无法重现这些线程的结果。
这是我迄今为止所做的一个可重复的示例。最后一行 scale_linetype_manual 似乎不起作用。如何在我的图例中为 grp3 和 grp4 生成虚线?
library(ggplot2)
set.seed(123)
# Example data
N <- 1000
x1 <- rnorm(N, 5)
x2 <- rnorm(N, 10)
x3 <- rnorm(N, 15)
x4 <- rnorm(N, 20)
ggplot() +
stat_density(aes(x = x1, col = "grp1"), position = "identity", geom = "line") +
stat_density(aes(x = x2, col = "grp2"), position = "identity", geom = "line") +
stat_density(aes(x = x3, col = "grp3"), position = "identity", geom = "line", linetype = 2) +
stat_density(aes(x = x4, col = "grp4"), position = "identity", geom = "line", linetype = 2) +
theme_bw() +
theme(axis.text.y = element_text(angle = 90, hjust = 0.3),
axis.title.x = element_text(vjust = - 0.5),
plot.title = element_text(vjust = 1.5),
legend.title = element_blank(), legend.position = c(0.75, 0.85),
legend.key = element_blank(), legend.text = element_text(size = 10)) +
scale_color_manual(values = c("red", "dodgerblue3", "red", "dodgerblue3")) +
scale_linetype_manual(values = c("grp1" = 1, "grp2" = 1, "grp3" = 2, "grp4" = 2))
【问题讨论】:
-
从您的第一个链接:“将
linetype =放入aes()” -
@Henrik 如果我将
linetype = 2放入aes,它会返回错误Error: Continuous value supplied to discrete scale。如果我输入linetype = "grp3"它会创建 2 个不同的图例。