我正在尝试用两个数据系列创建一个非常简单的散点图。我想通过我正在使用的数据帧中的第四列指定每个点的颜色。我已经将散点图本身接近我想要的位置,两个系列有两个不同的字形,但颜色没有分配到正确的点。我对R很新,所以我不确定从哪里开始。任何帮助,将不胜感激。附带示例数据和代码(无法上传图片)。
示例数据:
x y group color
0 0 g red
2 -1 g blueviolet
0 -1 g brown
2 -2 g blueviolet
0 -11 g blue
2 -6 g blue
0 1 g coral
0 -2 g blue
2 -1 h blueviolet
0 -1 h brown
2 -2 h blueviolet
0 -11 h blue
2 -6 h blue
0 1 h coral
2 -8 h blue
4 -2 h coral
1 -5 h brown
1 -9 h violet
-2 2 h blue
示例R代码:
ztest=read.table(file="ztest.txt",sep="\t",header=TRUE)
plot(ztest$x,ztest$y,type='n')
points(ztest[ztest$group=="g",]$x,ztest[ztest$group=="g",]$y,col=ztest$color,pch=3,cex=.75)
points(ztest[ztest$group=="h",]$x,ztest[ztest$group=="h",]$y,col=ztest$color,pch=1,cex=1.75)
答案 0 :(得分:2)
答案可能是当你用read.table读取颜色时,颜色被解释为一个因素。尝试
ztest$color <- as.character(ztest$color)
看看它是否有效。
或者ggplot2对于这种事情很棒。在您完成上述操作后,请尝试替代您的方法
library(ggplot2)
qplot(x,y, color=color, shape=group, data=ztest, size=group) +
scale_color_identity(legend=FALSE) +
scale_shape_manual(values=c(3,1)) +
scale_size_manual(values=c(3,6))
答案 1 :(得分:1)
您似乎是对点进行子集化,但不是对颜色进行子集化。而不是
points(ztest[ztest$group=="g",]$x,ztest[ztest$group=="g",]$y,col=ztest$color, ...
试
points(ztest[ztest$group=="g",]$x,ztest[ztest$group=="g",]$y,col=as.character(ztest[ztest$group=="g",]$color), ....
希望这有帮助