0

我有一些我想绘制的数据(例如plot(x,y)),但我有一些我想根据向量z中的值来着色的标准,看起来像c(1, 0, 1, 1, 1, 1, 0, NA ,0 ,0, .....)等等。

有什么方法可以选择1's 的颜色和0's 的颜色吗?

谢谢

4

5 回答 5

4

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

#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)

在此处输入图像描述

于 2013-02-11T20:10:15.573 回答
3

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

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

然后你可以简单地做:

plot(x, y, col=zcol)
于 2013-02-11T18:45:15.987 回答
2

使用 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()
于 2013-02-11T19:00:12.860 回答
2

也许我错过了一些东西,但我认为你想要:

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

red用andblue或其他替换这两种颜色。

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

对于更多颜色,您可以data.frame使用 的唯一值创建一个小映射z,然后zdata.frame. 这是一个有两种颜色的例子:

map<-data.frame(z=c(0,1),col=c('red','blue'))
plot(x,y,col=merge(z,map)$col)
于 2013-02-11T18:51:59.153 回答
1

您可以为参数提供颜色矢量,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
于 2013-02-11T18:52:22.717 回答