2012-04-11 34 views
35

我有一个图例中的一条线(从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") 

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

+0

为什么此问题未标记为已回答? – 2016-10-27 13:22:56

回答

21

正如?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) 

enter image description here

换行符与新行字符\n实现。只需通过改变绘图的顺序即可完成点的可见性。请记住,在R中绘图就像在一张纸上绘图:你绘制的每个东西都将放置在当前存在的任何东西之上。

请注意,由于我将绘图尺寸缩小(windows.options不存在于所有R平台上),因此图例文本被切断。

+1

box.lwd = 0将正常工作。 bty ='n'可能更好,因为它意味着图例框的类型根本就是NONE。两个很好的答案! – 2014-05-08 15:36:36

+2

这比bty ='n'更好的答案,因为它保留了白色的bg,这是原始问题的要求。对于第二点,图例覆盖了线条而不是点,我能看到的唯一解决方案是在图例线后添加一个points()命令。 – slammaster 2014-10-20 17:22:00

76

使用选项bty = "n"legend删除图例周围的框。例如:

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") 
+1

这工作出色!谢谢! – Contango 2013-04-12 12:43:47

+2

这是正确的答案。如果R文档实际上解释了bty ='n'不会导致绘制图例框,那将会很好。相反,它只是说'n'是没有解释该选项效果的选项之一。我想知道R维护者是否会允许像我这样的人来改进标准文档,比如这样。 – 2014-05-08 15:34:26

+1

bty是什么意思? – olala 2014-11-25 18:26:42