1

我想旋转一个图例以放置在右轴上的图形之外。我可以将图例放在图表之外,但我不知道如何旋转它。我尝试使用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)

但在右轴而不是顶轴上。

4

1 回答 1

3

我能想到的最明智的选择是在 gridBase 的帮助下设置两个绘图区域,并为图例使用基于网格的函数(因为 grobs 总是可以旋转的)。Lattice 有一个(我认为是 simpleKey),但 vcd 可能与基本版本最接近。

请注意,如果您不需要调整窗口大小,则可能根本不使用 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)))

在此处输入图像描述

于 2013-05-28T21:23:47.017 回答