R legend pch混合了字符和数字

时间:2012-11-19 11:45:29

标签: r

是否可以使用字符和数字的混合作为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

5 个答案:

答案 0 :(得分:10)

使用“+”字符的等效数字:

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

答案 1 :(得分:6)

我的第一个想法是绘制图例两次,一次打印字符符号,一次打印数字符号:

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上)和pdf(),但不适用于bmp()png()设备。

enter image description here

答案 2 :(得分:5)

实际上所有符号都有数字等价物!

enter image description here

来源:Dave Roberts

pch代码是上图中Y和X坐标的 concatenation

  • 例如,+符号位于行(Y)4和列(X)3中,因此可以使用pch = 43绘制。

示例:

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

答案 3 :(得分:3)

我曾几次碰到这个问题,所以我在下面写了一个小函数。您可以使用它来指定pch值,例如

pch=c(15:17,s2n("|"))

String to Numeric

答案 4 :(得分:0)

在以前的答案中,如noted所示,您只需添加要绘制的数字和字符符号的numerical equivalent即可。

然而,只是一个相关的旁边:如果你想绘制更大的数字(例如,> 100)或字符串(例如,'ABC')作为符号,你需要使用一个完全不同的方法,基于使用{{1 }}。

text()

在这种情况下创建一个图例更加复杂,我所能想到的最好的方法是将图例叠加在一起,并使用`Plot(x,y,dat,type='n') ; text(x,y,labels = c(100,'ABC') 参数同时使用{{} 1}}符号和说明

legend
  • 这使用strrep来连接空格,以便将文本从“符号”移开,并使用rect在打印的图例文本周围追溯一个框。

enter image description here