在散点图R中为名称指定不同的pch?

在散点图R中为名称指定不同的pch?,r,R,我有: x=c(2,1,5,2) ; y=c(6,11,7,3) x1=c(7,6,7,3) ; y1=c(3,9,4,3) names(y1) = c("B", "C","A","D"); names(x1) = c("A", "B","C","D") names(y) = c("C", "B","A","D");names(x) = c("D", "A","B","D") plot(x1,y1,col="green") 这里的问题是,它取x1 7的第一个值和y1 3的第一个

我有:

 x=c(2,1,5,2)  ; y=c(6,11,7,3)
 x1=c(7,6,7,3)  ; y1=c(3,9,4,3)
 names(y1) = c("B", "C","A","D");  names(x1) = c("A", "B","C","D")
 names(y) = c("C", "B","A","D");names(x) = c("D", "A","B","D")
 plot(x1,y1,col="green")
这里的问题是,它取x1 7的第一个值和y1 3的第一个值并绘制它们。意思是“A”和“B”。我希望通信是来自x1 7的A,应该是来自y1 4的A的绘图

此外,我想给每个字母不同的pch和绘图中的图例绘图都是点和圆


有关于这方面的HNT吗?

我建议将数据存储在数据帧中,而不是单独的向量中。在这种情况下,使用数据帧可以轻松合并x和y数据,以便它们按名称排列:

dx = data.frame(name = names(x1), x1 = x1)
dy = data.frame(name = names(y1), y1 = y1)
d = merge(dx, dy)
d
#   name x1 y1
# 1    A  7  4
# 2    B  6  3
# 3    C  7  9
# 4    D  3  3
然后,打印工作非常容易,再次使用数据框:

with(d, plot(x1,y1,col="green", pch = as.integer(name)))
我会留下添加图例给你-只需搜索如何添加图例到R中的绘图,或查看?图例

作为补充说明,ggplot2在绘图方面非常流行。它会自动添加图例,如下所示:

library(ggplot2)
ggplot(d, aes(x = x1, y = y1, shape = name)) +
    geom_point(color = "green") +
    theme_bw()

您应该将数据排列到单个data.frame中,然后打印该图,而不是打印多个矢量要将点添加到现有图中,请使用“点”功能。