R legend pch混合了字符和数字

rmf*_*rmf 16 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
Run Code Online (Sandbox Code Playgroud)

小智 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"))
Run Code Online (Sandbox Code Playgroud)

  • 对于任何感兴趣的人,字母表的数字等价于A的'pch = 65`开始. (4认同)

Jos*_*ien 7

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

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"))
Run Code Online (Sandbox Code Playgroud)

注:奇怪的是,这部作品中的R的本地图形设备(Windows)在pdf(),但不是在bmp()png()设备...

在此输入图像描述

  • @Roy首先,legend()也将坐标视为"bottomleft","bottomright",......不需要使用smartlegend().其次,这个解决方案也超过了两个传说.这就是你需要做的事情,因为`c("+",16)`总是在传递给`legend()`函数之前转换为字符向量. (4认同)
  • 如果过度绘图是一个问题:`图例(7,4.5,pch = c(NA,16),图例= c("A","B")); 图例(7,4.5,pch = c("+",NA),图例= c("",""),bty ="n")`你可以将所有在第二次调用中过度绘图的元素留空`legend`. (3认同)

the*_*ist 7

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

在此输入图像描述

资料来源:戴夫罗伯茨

pch代码是上图的Y和X坐标串联.

  • 例如,+符号在行(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"))
Run Code Online (Sandbox Code Playgroud)