Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在图例中包含自定义点符号_R_Plot_Legend - Fatal编程技术网

R 如何在图例中包含自定义点符号

R 如何在图例中包含自定义点符号,r,plot,legend,R,Plot,Legend,考虑以下数据/绘图,因为我只为pch分配数值 plot(1:20, col='blue', pch=20); points(2:22, col='red', pch='+', cex=2) points(4:24, col='green', pch=15) legend('bottomright',c('Blue','Red', 'Green'), col=c("blue", "red", "green"), horiz=T, cex=0.8, pch=c(

考虑以下数据/绘图,因为我只为
pch
分配数值

plot(1:20, col='blue', pch=20); 
points(2:22, col='red', pch='+', cex=2)
points(4:24, col='green', pch=15)

legend('bottomright',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=T, cex=0.8,
       pch=c(20,20,15), bg='white')
但当我包含字符值时,它仍然绘制图例,但使用了错误的点类型

legend('bottom',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=F, cex=0.8,
       pch=c(20,'+',20), bg='white')
当仅使用字符值时,图例再次正确:

legend('bottomleft',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=F, cex=0.8,
       pch=c('!','+','*'), bg='white')
中间的传说是个问题。如何使用正确的点类型绘制图例

我知道我可以使用
pch=3
作为“+”符号,但是如果我尝试绘制一个“!”符号呢?

您可以传入一个数字向量或要用作字符的符号。由于向量只能是一种数据类型,因此您不能在尝试时将这两种数据类型混合在一起—在您的情况下,它将向量中的所有值强制为
字符

以下是您应该指定的内容:

legend('bottomright',c('Blue','Red', 'Green'),   
   col=c("blue", "red", "green"), horiz=T, cex=0.8,
   pch=list(20,3,15), bg='white')

编辑:因为你想要
符号具体来说,您必须查找该值的pch值。在这种情况下,从
点可以将ASCii码传递到要绘制的符号,即pch=33。对于+字符,ASCii码为43

plot(1:20, col='blue', pch=20); 
points(2:22, col='red', pch='+', cex=2)
points(4:24, col='green', pch=15)

legend('bottomright',c('Blue','Red', 'Green'),   
       col=c("blue", "red", "green"), horiz=T, cex=0.8,
       pch=c(20,43,15), bg='white')
以下是pch的可接受值:

无整数:无符号。
0:18:S兼容矢量符号。
19:25:进一步的R矢量符号。
26:31:未使用(并被忽略)。
32:127:ASCII字符。
仅在单字节区域设置中以及对于 符号字体。(128:159仅在Windows上使用。)


因为您正在将向量传递给
pch
,并且如果我使用
pch=c('20','+','20')
,向量必须是相同的数据类型,它也会抛出警告,并且没有正确地绘制它,尽管向量现在只包含字符。您需要查看
?点
以找到与“+”对应的数字-请参见下面的我的答案。您是否需要类似
绘图(1,type=“n”,xlab=”“,ylab=“”,ylim=c(1,12),xlim=c(1,12));text(1:12,rep(“!”,12))
?不,我正在寻找一种在图例中混合字符和点类型的方法。但克里斯已经解决了这个问题。非常感谢。我编辑了这个问题。我知道我可以使用
pch=3
,但是如果我想画一个“!”符号呢?这不可能吗?我明白了。据我所知,这是不可能的。你要么传递一个数字向量,要么传递一个单字符符号的向量——看起来你不能混合这两个编辑:找到
符号pch=33
utf8ToInt(!”
告诉您它是33。