我正在尝试绘制两个正态分布和两个表示均值的vline。当我使用ggplot2进行操作时,图例变成了十字形,很难看到其中一个是虚线。
ggplot(data = data.frame(x = c(-1, 6)), aes(x)) +
stat_function(fun = dnorm, n = 100, args = list(mean = 2, sd = 1), aes(linetype = "a")) +
stat_function(fun = dnorm, n = 100, args = list(mean = 3, sd = 1), aes(linetype = "b")) +
scale_linetype_manual("Density Function", values = c(1, 2)) +
labs(x = "Value", y = "Probability Density") +
geom_vline(aes(xintercept = 2, colour = "mean1"), show.legend = TRUE) +
geom_vline(aes(xintercept = 3, colour = "mean2"), show.legend = TRUE, linetype = 2) +
scale_colour_manual("Mean", values = c(mean1 = "#F8766D", mean2 = "#C77CFF"),
labels = c("Mean a", "Mean b")) +
ggtitle("Legend Help")
答案 0 :(得分:2)
ggplot(data = data.frame(x = c(-1, 6)), aes(x)) +
stat_function(
fun = dnorm, n = 100, args = list(mean = 2, sd = 1), aes(linetype = "a")
) +
stat_function(
fun = dnorm, n = 100, args = list(mean = 3, sd = 1), aes(linetype = "b")
) +
geom_vline(
data = data.frame(
xintercept = c(2, 3), colour = c("mean1", "mean2"),
stringsAsFactors = FALSE
),
aes(xintercept = xintercept, colour = colour)
) +
scale_colour_manual(
name = "Mean",
values = c(mean1 = "#F8766D", mean2 = "#C77CFF"),
labels = c("Mean a", "Mean b")
) +
scale_linetype_manual("Density Function", values = c(1, 2)) +
labs(
x = "Value", y = "Probability Density", title = "Legend Help"
)
show.legend=TRUE
迫使所有美学领域的继承。保留NA
会删除继承关系,而且您为vline
使用了映射的美感(我对此做了一点修改)意味着您仍然可以免费获得额外的vline
图例。
答案 1 :(得分:0)
This讨论似乎正在解决类似的问题。
Hadley建议的解决方法是致电show.legend = NA
我转载了您执行此操作的情节(下面的完整代码),问题消失了:
ggplot(data = data.frame(x = c(-1, 6)), aes(x)) +
stat_function(fun = dnorm, n = 100, args = list(mean = 2, sd = 1), aes(linetype = "a")) +
stat_function(fun = dnorm, n = 100, args = list(mean = 3, sd = 1), aes(linetype = "b")) +
scale_linetype_manual("Density Function", values = c(1, 2)) +
labs(x = "Value", y = "Probability Density") +
geom_vline(aes(xintercept = 2, colour = "mean1"), show.legend = NA) +
geom_vline(aes(xintercept = 3, colour = "mean2"), show.legend = NA, linetype = 2) +
scale_colour_manual("Mean", values = c(mean1 = "#F8766D", mean2 = "#C77CFF"),
labels = c("Mean a", "Mean b")) +
ggtitle("Legend Help")