【发布时间】:2017-02-16 17:39:17
【问题描述】:
请考虑以下 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))
按照here 和here 的建议,但它对我不起作用。这个建议基本上显示了线性和多项式模型的数据和图例,完全隐藏了对数和指数模型。
【问题讨论】:
-
您需要指定哪个图例,在本例中为
colour图例:guides(colour=guide_legend(ncol=2,nrow=2,byrow=TRUE))。但是,当我运行您的代码时,nls模型的stat_smooth失败,因此为图例的第二行创建了空间,但实际上没有为nls模型呈现图例框。 -
@eipi10 这确实有效;谢谢,但是如果我有奇数个键怎么办,并且我希望图例的每一行水平居中对齐。这可能吗?