如何在ggplot2中移动或定位图例
我正在试图创build一个ggplot2阴谋与图下的传说。
ggplot2书上第112页说:“图例的位置和理由由主题设置legend.position控制,值可以是右,左,上,下,无(无图例)或数字位置”。
下面的代码可以工作(因为“right”是默认的),它也可以作为图例位置使用“none”,但是“left”,“top”,“bottom”,全部失败,出现“Error in grid.Call .graphics(“L_setviewport”,pvp,TRUE):视口的非有限位置和/或大小“
library(ggplot2) (myDat <- data.frame(cbind(VarX=10:1, VarY=runif(10)), Descrip=sample(LETTERS[1:3], 10, replace=TRUE))) qplot(VarX,VarY, data=myDat, shape=Descrip) + opts(legend.position="right")
我究竟做错了什么? 重新定位一个传奇必定非常普遍,所以我认为这是我。
在版本> 0.9.3(当opts
被弃用时)
theme(legend.position = "bottom")
旧版本:
不幸的是,这是ggplot2中的一个错误,我真的很希望在今年夏天修复它。
更新:
涉及opts(legend.position = "left")
的bug已经使用最新版本的ggplot2修复了 。 另外,0.9.0版本引入了guide_legend
和guide_colorbar
,可以更好地控制图例本身的外观和定位。 例如,能力指定图例项目的行数和列数。
您始终可以手动放置图例 – 但由于标签仍然是堆叠/垂直的,所以看起来很丑。 我真的希望哈德利有时间来解决这个问题:-)
p <- qplot(VarX,VarY, data=myDat, shape=Descrip) + opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines"))
在新版本的ggplot2
,你可以使用+ theme(legend.position='bottom')
。
qplot(VarX,VarY, data=myDat, shape=Descrip) + theme(legend.position='bottom')
请参阅食谱R – 传奇更多的传说善良。
作为回应, theme_update()
如果在ggplot(如+ theme_update()
中间调用,仅在后续时间才会+ theme_update()
,它也会修改活动的主题而不是特定的情节。做这个:
theme_update(legend.position='bottom') qplot(VarX,VarY, data=myDat, shape=Descrip)
结果如上,不同之处在于后面的图也默认为底部的图例。