将图例放置在构面的第一个图中

问题描述 投票:0回答:3

我想将我的情节图例放在情节内,在一个方面的第一个情节内。

这是一些示例代码:

df=data.frame(
 x=runif(10),
 y=runif(10),
 facet=rep(c("a","b"),5),
 color=rep(c("red","blue"),5))

ggplot(data=df,aes(x=x,y=y,color=color))+
 geom_point()+
 facet_wrap(~facet,ncol=1)

这是结果图:

plot with legend on outside

这大概是我希望它看起来的样子:

plot with legend inside

感谢您提供的任何帮助!

r position ggplot2 legend
3个回答
35
投票

假设您的绘图保存为

p

p + theme(
  legend.position = c(0.9, 0.6), # c(0,0) bottom left, c(1,1) top-right.
  legend.background = element_rect(fill = "white", colour = NA)
)

如果您希望图例背景部分透明,请将

fill
更改为,例如
"#ffffffaa"


22
投票

或者,基于 @Richie Cotton 的答案,因为 opts 现在在 ggplot2 中已被弃用(仍然假设你的图被定义为 p)

p + theme(legend.position = c(0.9, 0.6)
          ,legend.background = element_rect(fill = "white", colour = NA))

0
投票

在 ggplot2 3.5.0 之后,“

legend.position
中的数字
theme()
参数已被弃用”,因此应使用“
legend.position.inside
theme()
参数”。

并且

legend.position
现在有
"inside"
选项。

因此,在之前的答案的基础上,现在您应该使用:

p + theme(
  legend.position = "inside",
  legend.position.inside = c(0.9, 0.6), # c(0,0) bottom left, c(1,1) top-right.
  legend.background = element_rect(fill = "white", colour = NA)
)
© www.soinside.com 2019 - 2024. All rights reserved.