改变R Legend中的符号边框

时间:2016-01-19 23:28:54

标签: r symbols

我使用pch = 22和lty = 1:

制作了以下图例

enter image description here

我想将这些pch 22符号中的一些符号的边框类型更改为虚线。似乎应该有一个相当简单的解决方案,但我无法弄明白。

我的代码如下:

plot(1, type = 'n')
legend("top",legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=c(22,22,22,22,22),pt.cex=4,cex=1.5,
       col=c("red","blue","green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n',horiz=T,lwd=c(2,2,2,2,2),x.intersp=0.5)

1 个答案:

答案 0 :(得分:1)

一个hacky选项是使用Unicode符号来获得我希望接近你所追求的东西。

我们需要绘制两次图例来完成这项工作。首先,我们通过将边框颜色更改为NA来绘制两个最左边框上没有任何边框的图例。然后我们再次绘制图例,这次使用Unicode符号作为我们前一次遗漏的两个框边框的虚线方块。我还必须手动调整pt.cex值,以使虚线框的大小与pch=22符号相同。

我还必须使用" Cambria Math"字体,以使虚线框正确呈现。我已经添加了注释掉的代码来使用该字体。如果您的系统上没有该字体,则可能需要尝试使用几种不同的字体系列来查找符合所需Unicode符号的字体。

# par(family="Cambria Math")

plot(1, type = 'n')

legend(0.8,1.4,legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=rep(22,5),
       pt.cex=6.8,cex=1.5,
       col=c(NA,NA,"green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n', horiz=T, lwd=c(2,2,2,2,2), x.intersp=0.5)

legend(0.8,1.4,legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=c("\u2B1A","\u2B1A",NA,NA,NA),
       pt.cex=4,cex=1.5,
       col=c("red","blue","green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n', horiz=T, lwd=c(2,2,2,2,2), x.intersp=0.5)

enter image description here