ggplot2:如何将linebreak添加到水平图例

时间:2017-02-16 17:39:18

标签: r ggplot2 legend

请考虑以下R脚本(从here采取并稍作修改):

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 个答案:

答案 0 :(得分:1)

正如eipi10所述,

  

您需要指定哪个图例,在本例中为颜色图例:guides(colour=guide_legend(ncol=2,nrow=2,byrow=TRUE)).

为了澄清,美学定义了每一行的colour。如果使用fill,则该行可以是guides(fill=guide_legend(ncol=2,nrow=2,byrow=TRUE))