给散点图R中的名字赋予不同的pch?

时间:2018-05-07 17:22:37

标签: 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)的第一个值并绘制它们。这意味着“A”和“B”。我希望来自x1(7)的对应关系应该是来自y1(4)的A的情节。

此外,我想为每个字母添加不同的pch并绘制图例(在图中都是点(圆圈))。

对此有什么打击?

1 个答案:

答案 0 :(得分:1)

我建议将数据存储在数据框中,而不是单独的矢量。在这种情况下,使用数据框可以轻松merge您的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)))

enter image description here

我将向您添加图例 - 只需搜索“如何将图例添加到R中的图表”,或查看?legend

作为旁注,ggplot2非常适合绘图。它会自动添加图例,如下所示:

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

enter image description here