是否可以在 R 图例中混合使用字符和数字作为绘图符号?
plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c("+",16),legend=c("A","B")) #This is the problem
是否可以在 R 图例中混合使用字符和数字作为绘图符号?
plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c("+",16),legend=c("A","B")) #This is the problem
使用“+”字符的等价数字:
plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c(43,16),legend=c("A","B"))
我的第一个想法是绘制图例两次,一次打印字符符号,一次打印数字符号:
plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c(NA,16),legend=c("A","B")) # NA means don't plot pt. character
legend(7,4.5,pch=c("+",NA),legend=c("A","B"))
注意:奇怪的是,这适用于 R 的本机图形设备(在 Windows 上)和 in pdf()
,但不适用于bmp()
或png()
设备 ...
如前面的答案所述,您可以简单地添加要绘制的数字和字符符号的数字等价物。
但是,只是一个相关的问题:如果您想绘制更大的数字(例如,> 100)或字符串(例如,'ABC')作为符号,您需要使用基于 using 的完全不同的方法text()
。
`Plot(x,y,dat,type='n') ; text(x,y,labels = c(100,'ABC')
在这种情况下创建图例更加复杂,我想出的最佳方法是将图例堆叠在一起并使用符号和描述的legend
参数pch
:
pchs <- c(100,'ABC','540',sum(13+200),'SO77')
plot(1:5,1:5,type='n',xlim=c(1,5.1))
text(1:5,1:5,labels = pchs)
legend(3.5,3,legend = pchs,bty='n',title = '')
legend(3.5,3,legend = paste(strrep(' ',12),'ID#',pchs),bty='n',title='Legend')
rect(xleft = 3.7, ybottom = 1.5, xright = 5.1, ytop = 3)