Dan*_*ein 63 r legend ggplot2 legend-properties
我正在尝试使用图表下方的图例创建一个ggplot2图.
ggplot2书在第112页上说"传说的位置和对齐由主题设置legend.position控制,值可以是右,左,上,下,无(无图例)或数字位置".
下面的代码工作(因为它是默认的"右"),并且它也可以使用"none"作为图例位置,但是"left","top","bottom"都会失败并显示"grid 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")
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?重新定位一个传奇必须非常普遍,所以我认为这是我.
had*_*ley 60
在版本> 0.9.3(opts
不推荐使用时)
theme(legend.position = "bottom")
Run Code Online (Sandbox Code Playgroud)
旧版本:
不幸的是,这是ggplot2中的一个错误,我真的希望在今年夏天修复它.
更新:
涉及的bug opts(legend.position = "left")
已使用最新版本的ggplot2修复.此外,版本0.9.0看到了引入,guide_legend
并guide_colorbar
允许更精细地控制图例内的项目的外观和位置.例如,该功能指定图例项的行数和列数.
Soi*_*Guy 12
当我在这里时,只是对这些答案进行了一些更新。正如哈德利所提到的,您可以将图例移动到底部theme(legend.position = "bottom")
或手动移动 theme(legend.position = c(.2,.85))
如果您希望图例是水平的,请使用 theme(legend.position = c(.2,.85), legend.direction = "horizontal")
在较新版本中ggplot2
,您可以使用+ theme(legend.position='bottom')
.
qplot(VarX,VarY, data=myDat, shape=Descrip) +
theme(legend.position='bottom')
Run Code Online (Sandbox Code Playgroud)
请参阅Cookbook for R - Legends了解更多传奇的优点。
作为对评论的回应,theme_update()
如果在 ggplot 中间调用,则不会启动(如 中所示+ theme_update()
,仅在随后的时间中调用。它还会修改活动主题而不仅仅是特定的图。所以你可以这样做:
theme_update(legend.position='bottom')
qplot(VarX,VarY, data=myDat, shape=Descrip)
Run Code Online (Sandbox Code Playgroud)
结果如上,不同之处在于后续图也将默认为底部图例。
您始终可以手动放置图例 - 但由于标签仍然堆叠/垂直,它看起来有点难看。我真的希望哈德利能抽出时间来解决这个问题:-)
p <- qplot(VarX,VarY, data=myDat, shape=Descrip) +
opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48830 次 |
最近记录: |