2017-02-16 24 views
0

请考虑下列R-脚本(从here取出并略作修改):GGPLOT2:如何断行添加到水平传说

require(ggplot2) 

x <- 1:10 
y <- jitter(x^2) 

DF <- data.frame(x, y) 

p <- ggplot(DF, aes(x = x, y = y)) + geom_point() + 
    stat_smooth(method = 'lm', aes(colour = 'linear')) + 
    stat_smooth(method = 'lm', formula = y ~ poly(x,2), 
       aes(colour = 'polynomial')) + 
    stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, 
       aes(colour = 'logarithmic')) + 
    stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), 
       aes(colour = 'Exponential')) + 
    theme(legend.position = "top") 

p <- p + guides(guide_legend(ncol=2,nrow=2,byrow=TRUE)) 


p 

传说是在图的顶部显示。我想把这个传说分成两行,每行有两个键。这可能吗?

请注意,你可能会看到,我已经尝试过

p+guides(guide_legend(ncol=2,nrow=2,byrow=TRUE)) 

的建议herehere,但它并没有为我工作。这个建议基本上显示了线性和多项式模型的数据和图例,并完全隐藏了对数和指数模型。

+1

您需要指定哪个图例,在本例中为'colour'图例:'guides(color = guide_legend(ncol = 2,nrow = 2,byrow = TRUE))'。然而,当我运行你的代码时,'nls'模型的'stat_smooth'失败,所以创建了图例第二行的空间,但实际上并没有为'nls'模型渲染图例框。 – eipi10

+0

@ eipi10这真的有用;谢谢,但是如果我有一个奇数的键,并且我希望图例的每一行水平居中对齐。这可能吗? – user8420488483439

回答

0

正如eipi10解释的,

需要指定说明,在这种情况下,颜色图例:guides(colour=guide_legend(ncol=2,nrow=2,byrow=TRUE)).

为了澄清,审美在限定各行的colour。如果使用fill,则该行可能是guides(fill=guide_legend(ncol=2,nrow=2,byrow=TRUE))