简体   繁体   English

ggplot图例 - scale_colour_manual无效

[英]ggplot legend - scale_colour_manual not working

I am trying to add a legend to my graphs, but nothing ever shows up. 我试图在我的图表中添加一个图例,但没有任何东西出现过。 This is the code I have: 这是我的代码:

ggplot(main, aes(x = ceiling(session/2))) + 
geom_line(aes(y = C_overall), colour = "blue", stat = "summary", fun.y = "mean") +
geom_line(aes(y = I_overall), colour = "red", stat = "summary", fun.y = "mean") +
labs(title = 'Overall Accuracy', x = 'Session', y = 'Percent Accurate') +
facet_wrap(~bird)

This shows me what I want, except with no legend. 这显示了我想要的东西,除了没有传说。 Everything I've seen says to use scale_colour_manual like this: 我见过的所有内容都说使用scale_colour_manual,如下所示:

ggplot(main, aes(x = ceiling(session/2))) + 
geom_line(aes(y = C_overall), colour = "one", stat = "summary", fun.y = "mean") +
geom_line(aes(y = I_overall), colour = "two", stat = "summary", fun.y = "mean") +
labs(title = 'Overall Accuracy', x = 'Session', y = 'Percent Accurate') +
facet_wrap(~bird) +
scale_colour_manual(name = 'Congruency', values = c("one" = "blue", "two" = "red"))

This seems to work for everyone else, but R just tells me that 'one' is an invalid color name. 这似乎适用于其他所有人,但R只是告诉我“一个”是一个无效的颜色名称。 I've worked on this for hours and I'm nowhere closer to figuring this out. 我已经花了几个小时研究这个问题而且我已经无法理解这一点了。

Here is some of my data if it's helpful: 以下是我的一些数据,如果它有用:

bird   session  C_overall   I_overall
23W     1       42.5        42.5
23W     2       46.25       47.5
23W     3       51.25       57.5
23W     4       47.5        52.5
23W     5       47.5        52.5
23W     6       47.5        62.5
23W     7       52.5        52.5
23W     8       50          55
23W     9       51.25       52.5
23W     10      48.75       47.5
43R     1       47.5        42.5
43R     2       43.75       37.5
43R     3       58.75       40
43R     4       51.25       40
43R     5       51.25       52.5
43R     6       36.25       35
43R     7       53.75       40
43R     8       57.5        45
43R     9       61.25       52.5
43R     10      48.75       47.5
57Y     1       45          67.5
57Y     2       53.75       62.5
57Y     3       47.5        65
57Y     4       52.5        52.5
57Y     5       47.5        50
57Y     6       48.75       70
57Y     7       66.25       72.5
57Y     8       55          60
57Y     9       57.5        72.5
57Y     10      58.75       67.5
76B     1       51.25       50
76B     2       56.25       42.5
76B     3       60          60
76B     4       68.75       70
76B     5       73.75       75
76B     6       55          52.5
76B     7       68.75       62.5
76B     8       40          40
76B     9       57.5        55
76B     10      66.25       70

The blue line should be "Congruent" and the red line should be "Incongruent". 蓝线应为“Congruent”,红线应为“Incongruent”。

Any help about how to make a legend would be greatly appreciated! 任何有关如何制作传奇的帮助将不胜感激! Thanks in advance!! 提前致谢!!

I would convert the data into long format before plotting: 在绘图之前,我会将数据转换为长格式:

library(reshape2)

main <- melt(main, c("bird", "session"))

ggplot(main, aes(x=ceiling(session/2), y=value, color=variable)) + 
  geom_line(stat="summary", fun.y="mean", size=1) +
  labs(title="Overall Accuracy", x="Session", y="Percent Accurate") +
  facet_wrap(~ bird) +
  scale_color_discrete("Results", labels=c("Congruent", "Incongruent"))

在此输入图像描述

Would that work for you? 这对你有用吗?

Make following changes in geom_line s and scale_color_discrete and you are good to go. geom_linescale_color_discrete以下更改,您就可以开始了。

ggplot(main, aes(x = ceiling(session/2))) + 
## changes in line below
geom_line(aes(y = C_overall, colour = "Congruent"), stat = "summary", fun.y = "mean") +
## changes in line below
geom_line(aes(y = I_overall, colour = "Incongruent"), stat = "summary", fun.y = "mean") +
labs(title = 'Overall Accuracy', x = 'Session', y = 'Percent Accurate') +
facet_wrap(~bird) +
# changes in line below
scale_color_discrete("Congruency")

在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM