This question already has answers here:
Add legend to ggplot2 line plot
(3个答案)
在4个月前关闭。
我试图(不成功)在我的R ggplot2图中显示一个图例,其中涉及多个图。我的数据框
我查找了以下堆栈流线程以及Google搜索:
Merging ggplot2 legend ggplot2 legend not showing `ggplot2` legend not showing label for added series ggplot2 legend for geom_area/geom_ribbon not showing ggplot and R: Two variables over time ggplot legend not showing up in lift chart Why ggplot2 legend not show in the graph ggplot legend not showing up in lift chart。
这是4天前创建的
这使我意识到,尽管通常会自动出现图例,但使图例出现是一个反复出现的问题。
我的第一个问题是使用ggplot时不显示图例的原因是什么?第二是如何解决这些原因。原因之一似乎与多个图和
相反,您应该首先重塑数据:
这样会产生更合适的格式:
这将使ggplot2易于按预期方式使用,其中颜色映射到变量的值:
(3个答案)
在4个月前关闭。
我试图(不成功)在我的R ggplot2图中显示一个图例,其中涉及多个图。我的数据框
df
和代码如下: Individuals Mod.2 Mod.1 Mod.3
1 2 -0.013473145 0.010859793 -0.08914021
2 3 -0.011109863 0.009503278 -0.09049672
3 4 -0.006465788 0.011304668 -0.08869533
4 5 0.010536718 0.009110458 -0.09088954
5 6 0.015501212 0.005929766 -0.09407023
6 7 0.014565584 0.005530390 -0.09446961
7 8 -0.009712516 0.012234843 -0.08776516
8 9 -0.011282278 0.006569570 -0.09343043
9 10 -0.011330579 0.003505439 -0.09649456
str(df)
'data.frame': 9 obs. of 4 variables:
$ Individuals : num 2 3 4 5 6 7 8 9 10
$ Mod.2 : num -0.01347 -0.01111 -0.00647 0.01054 0.0155 ...
$ Mod.1 : num 0.01086 0.0095 0.0113 0.00911 0.00593 ...
$ Mod.3 : num -0.0891 -0.0905 -0.0887 -0.0909 -0.0941 ...
ggplot(df, aes(df$Individuals)) +
geom_point(aes(y=df[,2]), colour="red") + geom_line(aes(y=df[,2]), colour="red") +
geom_point(aes(y=df[,3]), colour="lightgreen") + geom_line(aes(y=df[,3]), colour="lightgreen") +
geom_point(aes(y=df[,4]), colour="darkgreen") + geom_line(aes(y=df[,4]), colour="darkgreen") +
labs(title = "Modules", x = "Number of individuals", y = "Mode")
我查找了以下堆栈流线程以及Google搜索:
这是4天前创建的
这使我意识到,尽管通常会自动出现图例,但使图例出现是一个反复出现的问题。
我的第一个问题是使用ggplot时不显示图例的原因是什么?第二是如何解决这些原因。原因之一似乎与多个图和
aes()
的使用有关,但我怀疑还有其他原因。 最佳答案
您正在以完全错误的方式进行颜色设置。您已将颜色设置为多个图层中的恒定字符值,而不是将其映射到单个图层中的变量值。
这主要是因为您的数据不是“整洁的”(请参阅the following)
head(df)
x a b c
1 1 -0.71149883 2.0886033 0.3468103
2 2 -0.71122304 -2.0777620 -1.0694651
3 3 -0.27155800 0.7772972 0.6080115
4 4 -0.82038851 -1.9212633 -0.8742432
5 5 -0.71397683 1.5796136 -0.1019847
6 6 -0.02283531 -1.2957267 -0.7817367
相反,您应该首先重塑数据:
df <- data.frame(x=1:10, a=rnorm(10), b=rnorm(10), c=rnorm(10))
mdf <- reshape2::melt(df, id.var = "x")
这样会产生更合适的格式:
head(mdf)
x variable value
1 1 a -0.71149883
2 2 a -0.71122304
3 3 a -0.27155800
4 4 a -0.82038851
5 5 a -0.71397683
6 6 a -0.02283531
这将使ggplot2易于按预期方式使用,其中颜色映射到变量的值:
ggplot(mdf, aes(x = x, y = value, colour = variable)) +
geom_point() +
geom_line()
关于ggplot2图例未出现的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48768567/
10-12 23:32