R图例:基本图形中条形图的符号和标签的放置和大小调整

时间:2016-01-06 01:04:53

标签: r layout plot legend

我使用layout创建了15个面板:前3个面板是标题,后面是使用基础R的12个条形图。我想在第3个面板中包含多个绘图的图例以及标题。

水平图例中有3个图例项。我正在努力调整大小并将这些元素定位为它们在标题下的整齐和清晰。

默认的补丁大小太大但我找不到独立调整补丁符号和文本的方法(pt.cex不起作用,因为我没有使用点符号)。使用cex = 0.5调整图例大小可以得到我想要的补丁大小,但文本太小(我想要文本cex = 1)。

有没有办法独立于标签调整legend中的符号?

# layout graphs in a grid of 3 cols by 5 rows
final <- layout(matrix(c(1:15), 5, 3, byrow = TRUE))

plot.new()
text(0.5, 0.5, "Direction of wind gusts", cex = 1.5) # cex rescales text
plot.new()
text(0.5, 0.5, "Direction of extreme wind gusts", cex = 1.5)
plot.new()
text(0.5, 0.5, "Direction of plants", cex = 1.5)
# add legend below third title text
legtext <- c("Shrub","Graminoid","Cushion")
legend("bottom", legend=legtext,
       fill=gray(c(0.6, 0.3, 0.9)), horiz = TRUE, x.intersp = 0.3,
       bty="n", cex = 0.5, inset = c(0,-0.3))

以下代码是网格剩余部分中的12个条形图。

我还尝试了一种解决尺寸问题的解决方法,但似乎无法实现间距。解决方法是将补丁和文本分别绘制在一起。然后,我可以调整垂直偏移量来定位图例项目。

但是我无法弄清楚如何控制图例元素的水平间距,以便所有3个图例项都适合空间。大多数图例都被截断并且不可见,并且补丁和文本没有水平对齐(它们之间的间隙很大)。

# workaround is to plot a legend with just symbols (no labels) scaled 0.5
legend("bottom", legend= "",
       fill=gray(c(0.6, 0.3, 0.9)), horiz = TRUE, x.intersp = 0.1, 
       bty="n", cex = 0.5, inset = c(0,-0.3))
# then a legend with only labels, scaled to 1
legend("bottom", legend = legtext,
       horiz = TRUE, x.intersp = 0.02, bty="n", cex = 1, inset = c(0,-0.7))

我意识到导出或缩放绘图布局可以显示与R Studio中的屏幕布局/分辨率不同的内容,但仍然无法调整图例符号和文本,以便它们整齐地放在一行上。

0 个答案:

没有答案