考虑以下数据/情节,因为我只是将数值赋给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')
中间的传说是问题所在。 如何使用正确的点类型绘制图例?
答案 0 :(得分:3)
您可以传入数字向量或要用作字符的符号。由于向量只能是一种数据类型,因此您无法将两者混合在一起 - 在您的情况下,它会将向量中的所有值强制转换为character
。
以下是您应该指定的内容:
legend('bottomright',c('Blue','Red', 'Green'),
col=c("blue", "red", "green"), horiz=T, cex=0.8,
pch=list(20,3,15), bg='white')
编辑:由于您需要特定的!
符号,因此您必须查找该值的pch值。在这种情况下,它是pch = 33
答案 1 :(得分:1)
从?points
可以将ASCii代码传递给您想要绘制的符号。对于+,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的可接受值:
NA_integer_:没有符号。
0:18:S兼容的矢量符号。
19:25:进一步的R矢量符号。
26:31:未使用(并忽略)。
32:127:ASCII字符。
128:255本机字符仅在单字节语言环境中用于 符号字体。 (128:159仅用于Windows。)