Как я могу исправить цвета для чисел в матрице - PullRequest
0 голосов
/ 28 мая 2018

В настоящее время я пытаюсь сделать несколько визуализаций, в которых числа в матрице должны получить определенный (фиксированный) цвет в изображении.

Из-за того, что я не могу найти способ действительно назначить цветс фиксированным числом это доставляет мне больше проблем, чем я думал.

Проблема проявляется в следующих примерах:

Скажем, мы определяем следующие цвета, которые будут связаны со следующими числами

cols <- c(
 '0' = "#FFFFFF",
 '1' = "#99FF66",
 '2' = "#66FF33",
 '3' = "#33CC00",
 '4' = "#009900" 
)
image(as.matrix(d), col=cols)

Теперь, если мы визуализируем следующую матрицу, все выглядит хорошо

d<-read.table(text="
0  1  0  3
3  2  1  4
4  1  0  2
3  3  0  1")
image(as.matrix(d), col=cols)

Однако, если визуализировать следующую матрицу, проблема становится ясной

d<-read.table(text="
1  1  1  3
3  2  1  4
4  1  2  2
3  3  2  1")

image(as.matrix(d), col=cols)

Мы должны пропустить белый цвет("#FFFFFF"), так как число 0 отсутствует.Однако R решает использовать белый ("#FFFFFF") в любом случае и ассоциировать это с номером 1, пропуская вместо "# 009900".

Для согласованности моих визуализаций довольно важно, чтобы цвета оставались связанными с одинаковыминомера для всех изображений, так как я могу это реализовать?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

удаляет значения цвета, которые не видны в вашей матрице:

image(as.matrix(d), col=cols[names(cols)%in%unlist(d)])

unlist работает только в списках, как следует из названия.Если d уже является матрицей, просто используйте c(d)

0 голосов
/ 28 мая 2018

Благодаря совету Андре я могу решить это довольно аккуратно

d<-as.matrix(read.table(text="
1  1  1  3
3  2  1  4
4  1  1  2
3  3  1  1"))

cols <- c(
'0' = "#FFFFFF",
'1' = "#99FF66",
'2' = "#66FF33",
'3' = "#33CC00",
'4' = "#009900"
)

image(as.matrix(d), col= cols[ names(cols) %in% d ])
...