我正在使用下面data.frame
的{{1}},使用dput
来映射三个斜坡:
geom_abline
我现在所拥有的是这段代码:
moderator_value simple_intercept simple_slope
1 -1 -0.02745523 0.2768973
2 0 0.05990693 0.2147829
3 1 0.14726909 0.1526684
返回图:
我想添加一个图例,用ggplot() +
geom_abline(data=ablines,
mapping=aes(slope=simple_slope, intercept=simple_intercept),
linetype=c(1,2,3)) +
scale_x_continuous(limits=c(-1.5,2), name="Prejudice") +
scale_y_continuous(limits=c(-.75, .75), name="Authenticity") +
theme_light() +
theme(text=element_text(size=14))
标记这三个单独的行。我已经在其他地方查找了SO,但其中许多说只是在linetype
函数中包含show_guide
(现在已经弃用了geom_abline
)并将其设置为{{1 }}。这不适合我。我也试过使用show.legend
但没有运气。
如何添加分别标记每条线的图例?我想要包含主持人变量的名称以及" -1 SD","平均"和" + 1 SD"作为标签。
TRUE
数据的 scale_linetype_manual
:
dput
答案 0 :(得分:2)
你应该尝试做的是将每一行的一个独特特征(即主持人作为一个因素(b.c。我们不想将其解释为连续变量))映射到线型。
例如,使用此代码
ablines <- structure(list(moderator_value = c(-1, 0, 1),
simple_intercept = c(-0.0274552251655293, 0.0599069333124192, 0.147269091790368),
simple_slope = c(0.276897278474258, 0.214782863579552, 0.152668448684846)),
.Names = c("moderator_value", "simple_intercept", "simple_slope"),
row.names = c(NA, 3L), class = "data.frame")
library(ggplot2)
ggplot(ablines) +
geom_abline(mapping = aes(slope = simple_slope,
intercept = simple_intercept,
linetype = as.factor(moderator_value))) +
scale_x_continuous(limits=c(-1.5,2), name="Prejudice") +
scale_y_continuous(limits=c(-.75, .75), name="Authenticity")
答案 1 :(得分:2)
要获取图例,您必须将变量映射到aes()中的lynetipe。在您的代码中,您在aes()之外指定它。 请注意,在我的代码中,变量“moderator”的数值会将该数字映射到ggplot的可用线型。 要为每个线型指定自定义名称,请取消注释最后一条指令。
ggplot() +
geom_abline(data=ablines,
mapping=aes(slope=simple_slope, intercept=simple_intercept, linetype = moderator_value)) +
scale_x_continuous(limits=c(-1.5,2), name="Prejudice") +
scale_y_continuous(limits=c(-.75, .75), name="Authenticity") +
theme_light() ## +
## scale_linetype_continuous(labels = c("First Line", "Second Line", "Third Line")