直观地表示索引的向量 - R

时间:2017-05-23 18:57:51

标签: r vector plot

我有一个"逻辑" N组件的向量,如下所示:

0 0 0 0 0 1 1 1 1 0 1 0 1 0 ...

我想显示一个矢量/矩阵,其中元素是颜色。如果我的逻辑值的元素i是0,则元素i是一种颜色,否则是另一种颜色。它以视觉方式表示逻辑向量。

2 个答案:

答案 0 :(得分:1)

您可以在col=参数中使用逻辑向量进行绘图,逻辑将被强制转换为数字。所以你可以做到

logi_vec <- sample(c(T,F), 20, replace=T)
# [1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE

x <- rnorm(20)

# simple plotting, the pch=16 produces a solid dot
plot(x, col=logi_vec+1, pch=16)  # black vs. red

plot(x, col=logi_vec+2, pch=16)  # red vs. green

plot(x, col=2*(logi_vec+1), pch=16)  # red vs. blue

请注意,对于0/1的向量和FALSE / TRUE,这将使用完全相同的方式。

如果您想查看哪种颜色与您机器上的数字相对应,请查看

palette()
# [1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow"  "gray"   

因此,在我的机器上,值为1的颜色为黑色,2为红色等。请查看?palette以查看如何更改默认值。

答案 1 :(得分:0)

不完全确定您的预期输出是什么,但可能类似于:

x <- structure(c(0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0), .Dim = c(14L, 
    1L))

image(x, col = grey.colors(start = 1, end = 0, n = 2))

给予:

enter image description here

编辑:更好的版本:

z <- structure(c(0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0), .Dim = c(14L, 
                                                                     1L))
x <- 1:nrow(z)
y <- 1:ncol(z)
image(x, y, z, col = grey.colors(start = 1, end = 0, n = 2), yaxt = "n", xaxs = "r") 

enter image description here