我有一些我想要绘制的数据(例如plot(x,y)
),但我有一些标准,我想按颜色,具体取决于向量z
中的值看起来像c(1, 0, 1, 1, 1, 1, 0, NA ,0 ,0, .....)
等。
我有什么方法可以选择1
的颜色和0
的颜色是什么颜色?
由于
答案 0 :(得分: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)
答案 1 :(得分:3)
您希望获得一个颜色矢量,只要x
和y
矢量,例如如下:
z[is.na(z)] = 2
zcol = c("red", "blue", "black")[z + 1]
然后你就可以做到:
plot(x, y, col=zcol)
答案 2 :(得分:2)
也许我错过了什么,但我认为你想要:
plot(x,y,col=ifelse(z==0,'zerocolour','onecolour'))
您可以使用red
和blue
或其他颜色替换这两种颜色。
我认为NA
不会被绘制,所以你不必担心这些。
要获得更多颜色,您可以使用data.frame
的唯一值创建一个小地图z
,然后将z
与data.frame
合并。这是一个有两种颜色的例子:
map<-data.frame(z=c(0,1),col=c('red','blue'))
plot(x,y,col=merge(z,map)$col)
答案 3 :(得分: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()
答案 4 :(得分: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