我有这些:
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并绘制图例(在图中都是点(圆圈))。
对此有什么打击?
答案 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)))
我将向您添加图例 - 只需搜索“如何将图例添加到R中的图表”,或查看?legend
。
作为旁注,ggplot2
非常适合绘图。它会自动添加图例,如下所示:
library(ggplot2)
ggplot(d, aes(x = x1, y = y1, shape = name)) +
geom_point(color = "green") +
theme_bw()