R-如何使用color2d.matplot为值分配颜色

时间:2018-11-16 10:50:03

标签: r plot plotrix

我的问题与color2d.matplot包中的plotrix函数有关。该功能已记录在here中。

我有这个输出: enter image description here

由以下代码产生:

library(plotrix)

# model parameters
spaces <- 400
agents<- 300
prop_black = 0.5
prop_white = 1 - prop_black
tolerance <- 0.6

# creating matrix of types
group<-c(rep(0,spaces-agents),rep(1,prop_black*agents),rep(2,prop_white*agents))
grid<-matrix(sample(group,400,replace=F), ncol=20)

# plotting
color2D.matplot(grid, ylab="", xlab = "", axes=F)
plot(runif(100,0,1),ylab="Happy",xlab="Time",col="white",ylim=c(0,1))

请注意,我的grid仅包含0,1,2的值。 我如何做到这一点:

  • 所有0值都映射到白色正方形。
  • 所有1的值都映射为红色方块。
  • 所有2的值都映射到蓝色正方形。

我试图通过查看these examples来解决这个问题,但是运气并不好。

2 个答案:

答案 0 :(得分:1)

我想到的一件事是为每个单元格指定颜色。

cellcolors <- unlist(grid)
cellcolors <- ifelse(cellcolors == 0, "white", ifelse(cellcolors == 1, "red", "blue"))
color2D.matplot(grid, ylab="", xlab = "", axes=F, cellcolors = cellcolors)

enter image description here

答案 1 :(得分:1)

您可以使用矩阵中的值索引颜色矢量。一个较小的示例:

color2D.matplot(m, cellcolors = c("white", "red", "blue")[m + 1])

enter image description here


数据:

set.seed(7)
m <- matrix(sample(0:2, 9, replace = TRUE), nrow = 3, ncol = 3)
m
#      [,1] [,2] [,3]
# [1,]    2    0    1
# [2,]    1    0    2
# [3,]    0    2    0