R - Как назначить цвет для значений с color2d.matplot - PullRequest
0 голосов
/ 16 ноября 2018

Мой вопрос касается функции color2d.matplot из пакета plotrix.Функция задокументирована здесь .

У меня есть этот вывод: 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 отобразите синие квадраты.

Я попытался выяснить это, взглянув на эти примеры , но мне не повезло.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы можете индексировать цветовой вектор со значениями в вашей матрице. Меньший пример:

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
0 голосов
/ 16 ноября 2018

Одна вещь, о которой я могу подумать, это указать цвет для каждой ячейки.

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

...