62

我在一个情节中有一个图例,其中有一条线(来自 abline 语句)穿过它。我怎样才能使 abline 在图例附近变得不可见?这应该可以通过将图例背景设置为白色、无边框来实现,但我该如何实现呢?假设图表应如下所示:

windows.options(width=30, height=12)
plot(1:10)
abline(v=seq(1,10,1), col='grey', lty='dotted')
legend(4.8, 3, "This legend text should not be disturbed by the dotted grey lines")

让它更复杂一点:如果图例干扰了点图的点:我怎样才能实现 ablines 在图例附近变得不可见(如上),但点仍然可见?

windows.options(width=30, height=12)
plot(1:10)
abline(v=seq(1,10,1), col='grey', lty='dotted')
legend(1, 5, "This legend text should not be disturbed by the dotted grey lines, but the plotted dots should still be visible")

最后:有没有办法在图例语句中引入换行符?

4

2 回答 2

120

使用 option bty = "n"inlegend删除图例周围的框。例如:

legend(1, 5,
       "This legend text should not be disturbed by the dotted grey lines,\nbut the plotted dots should still be visible",
       bty = "n")
于 2013-04-07T13:38:49.620 回答
27

正如?legend你所记录的那样:

plot(1:10,type = "n")
abline(v=seq(1,10,1), col='grey', lty='dotted')
legend(1, 5, "This legend text should not be disturbed by the dotted grey lines,\nbut the plotted dots should still be visible",box.lwd = 0,box.col = "white",bg = "white")
points(1:10,1:10)

在此处输入图像描述

换行符是用换行符来实现的\n。只需更改绘图顺序即可使这些点仍然可见。请记住,在 R 中绘图就像在一张纸上绘图:您绘制的每一件事都将放在当前存在的任何内容之上。

请注意,图例文本被截断,因为我使绘图尺寸更小(windows.options 并非在所有 R 平台上都存在)。

于 2012-04-11T14:44:19.120 回答