【问题标题】:Scatter plot with color of data points specified with the data用数据指定的数据点颜色的散点图
【发布时间】:2012-06-07 22:40:30
【问题描述】:

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

【问题讨论】:

    标签: r data-visualization


    【解决方案1】:

    答案可能是当您使用 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))
    

    【讨论】:

    • 另外,如果您在使用read.csvread.table 读取数据,您还可以通过其他方式避免此问题。要么指定stringsAsFactors=FALSE,要么将每列中预期数据类型的向量传递给colClasses
    • 感谢您的建议。当我尝试 ggplot 时出现错误(根据互联网,一旦我更新 R 就会消失)。我来看看 stringsAsFactors 和 colClasses。
    【解决方案2】:

    您似乎在对点进行子集化,但没有对颜色进行子集化。而不是

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 2019-11-27
      • 2013-10-08
      • 2017-08-23
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多