使用数据指定的数据点颜色的散点图

时间:2012-06-07 22:40:31

标签: r data-visualization

我正在尝试用两个数据系列创建一个非常简单的散点图。我想通过我正在使用的数据帧中的第四列指定每个点的颜色。我已经将散点图本身接近我想要的位置,两个系列有两个不同的字形,但颜色没有分配到正确的点。我对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)

2 个答案:

答案 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), ....

希望这有帮助