【问题标题】:R: Coloring plotsR:着色图
【发布时间】:2013-02-11 18:44:05
【问题描述】:

我有一些我想绘制的数据(例如plot(x,y)),但我有一些我想着色的标准,具体取决于向量z 中的值,看起来像@987654323 @等

有什么方法可以让我选择1 的颜色以及0 的颜色吗?

谢谢

【问题讨论】:

  • 您希望 NA 是什么颜色的?
  • 还没有决定,但为了争论,让我们说黑色。如果我不想让他们出现怎么办?
  • 用相同位置的颜色创建一个长度相同的向量(例如使用 ifelse)并在绘图中使用它
  • 啊,如果是的话。谢谢!

标签: r colors plot


【解决方案1】:

我知道这个问题已经得到解答,但这里有一些 非常 直观的代码,带有供参考的图表。

#Let's create some fictional data 
x = rbinom(100,1,.5)
x[round(runif(10)*100)] = NA

#Assign colors to 1's and 0's
colors = rep(NA,length(x))
colors[x==1] = "blue"
colors[x==0] = "red" 

#Plot the vector x
plot(x,bg=colors,pch=21)

【讨论】:

    【解决方案2】:

    你想得到一个颜色向量只要xy向量,例如如下:

    z[is.na(z)] = 2
    zcol = c("red", "blue", "black")[z + 1]
    

    那么你可以简单地做:

    plot(x, y, col=zcol)
    

    【讨论】:

    • 我喜欢这个简洁的答案:)
    【解决方案3】:

    也许我错过了什么,但我想你想要:

    plot(x,y,col=ifelse(z==0,'zerocolour','onecolour'))
    

    redblue 或其他任何东西替换这两种颜色。

    我认为NA 不会被绘制,所以你不必担心这些。

    要获得更多颜色,您可以使用z 的唯一值创建一个小映射data.frame,然后将zdata.frame 合并。这是一个有两种颜色的示例:

    map<-data.frame(z=c(0,1),col=c('red','blue'))
    plot(x,y,col=merge(z,map)$col)
    

    【讨论】:

      【解决方案4】:

      使用 ggplot2 包

      require(ggplot2)
      
      df <- data.frame(x = c(1, 2, 3, 4, 5), y = c(2, 3, 4, 6, 7), z = c(1, 0 , 1, 0 , NA))
      df$z[is.na(df$z)] = 2
      ggplot(df, aes(x, y, color = as.factor(z))) + geom_point()
      

      【讨论】:

        【解决方案5】:

        您可以将颜色向量提供给参数col=,然后使用 z 来选择颜色。使用 paste() 将 NA 转换为字符,然后使用 as.factor() 将这些字符解释为 1、2 和 3。

        x<-c(1,2,3,4,5)
        y<-c(1,2,3,4,5)
        z<-c(1,0,NA,1,1)
        plot(x,y,col=c("red","green",'black')[as.factor(paste(z))],pch=19,cex=3)
        
        str(as.factor(paste(z)))
        Factor w/ 3 levels "0","1","NA": 2 1 3 2 2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-17
          • 2021-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-04
          相关资源
          最近更新 更多