在基本图形中旋转图例

时间:2013-05-28 21:01:57

标签: r graphics rotation legend

我想要将图例旋转到右轴上的图形外部。我可以将图例放在图表外面,但我无法弄清楚如何旋转它。我尝试使用las=2,但这显然不起作用。注意:我正在使用所有其他轴,或者我将图表上方的图例放在两列以实现相同的外观。

我已经拥有的一般例子:

par(mar=c(6,4,5,4)+0.1)
plot(0,type="n")
legend(x="right",
       legend=c("Control Chemical","Test Chemcials"),
       bty="n",
       fill=c("Darkgreen","Dodgerblue4"),
       title="Legend Title",
       inset=c(-0.2,0),
       xpd=TRUE,
       horiz=TRUE)

边距可能需要一些调整,但一旦我弄清楚如何旋转图例,我就可以轻松制作。

为了进一步澄清,我希望实现的目标类似于:

legend(x="top",
       legend=c("Control Chemical","Test Chemcials"),
       bty="n",
       fill=c("Darkgreen","Dodgerblue4"),
       title="Legend Title",inset=c(0,-0.3),
       xpd=TRUE,
       horiz=TRUE)

但是在右轴而不是顶轴。

1 个答案:

答案 0 :(得分:3)

我能想到的最明智的选择是在gridBase的帮助下设置两个绘图区域,并为图例使用基于网格的函数(因为可以始终旋转凹凸)。莱迪思有一个(我认为是simpleKey),但vcd可能有基本版本的closest match

请注意,如果您不需要调整窗口的大小,您可能根本不使用gridBase就可以逃脱:只需在右侧给出足够的边距,然后调整x和y坐标以推动右侧的网格图例位置。

这是一个可行的例子,

library(vcd)
par(mar=c(6,4,5,4)+0.1)
plot(0,type="n")

g = grid_legend(0.5, 0.5, pch=c(22,22), col=c("red", "blue"),
                gp=gpar(fill = c("Darkgreen","Dodgerblue4")),
                labels=c("Control Chemical","Test Chemicals"), 
                title = "Legend Title", draw=FALSE)

grid.draw(grobTree(g, vp=viewport(x=0.93,angle=-90)))

enter image description here