修改两个图例块的顺序 - 不确定如何使用guide_legend()

时间:2015-11-19 04:06:07

标签: r legend

我想更改所附图表中图例块的顺序,以便"观察"价值取决于"建模"价值而不是现在的相反。这是一个R脚本来说明我的问题:

#Dataframes to illustrate my question
A <- c(10,20,30,40, 50, 70)
B <- c(20,10,30,10, 6, 1)
C <- c("treat1","treat1", "treat1", "treat2", "treat2", "treat2" )
Modeled <- as.data.frame(cbind(A, B, C))
colnames(Modeled) <- c("varX", "varY", "treat")
E <- c(10,0,20,0, 6, 10)
obs <- as.data.frame(cbind(A, E, C))
colnames(obs) <- c("varX", "varY", "variable")

#plotting
library(ggplot2)
p <- ggplot(Modeled, aes(varX, varY))
p <- p + geom_line(aes(group=treat, colour=treat, linetype=treat)) 
p <- p + geom_point(data=obs, aes(x=varX, y=varY, shape=variable), size=3)
p <- p + scale_colour_manual(name='Modeled', values=c('black','grey'))
p <- p + scale_linetype_manual(name='Modeled', values=c('solid','dashed'))
p <- p + scale_shape_manual(name='Observed', values=c(16,24) )
p <- p + theme_bw()
p

在引导功能之前:

我已按照网站上其他帖子的建议尝试了guide()功能。见下面的脚本。但它重复了传说&#39; Modeled&#39;。

p <- ggplot(Modeled, aes(varX, varY))
p <- p + geom_line(aes(group=treat, colour=treat, linetype=treat)) 
p <- p + geom_point(data=obs, aes(x=varX, y=varY, shape=variable), size=3)
p <- p + scale_colour_manual(name='Modeled', values=c('black','grey'))
p <- p + scale_linetype_manual(name='Modeled', values=c('solid','dashed'))
p <- p + scale_shape_manual(name='Observed', values=c(16,24) )
p <- p + guides(colour = guide_legend(order = 1), 
         shape = guide_legend(order = 2))
p <- p + theme_bw()
p

enter image description here

1 个答案:

答案 0 :(得分:1)

你忘了设置&#34; linetype&#34; order( linetype = guide_legend(order = 2))与&#34; color&#34;相同。第二个&#34;模型传奇&#34;表示&#34;线型&#34; (对待2传奇是黑色虚线)而第一个&#34;模型传奇&#34;表示&#34;颜色&#34; (treat2图例是一条灰色实线),因此请改用:

p <- p + guides(linetype=guide_legend(order=2), 
                    colour=guide_legend(order=2), shape=guide_legend(order=1))

这是最后的数字: Observed is on top of Modeled