我使用pch = 22和lty = 1:
制作了以下图例我想将这些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)
答案 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)