Извлечение матрицы цветовых значений из тепловой карты или базовых данных

Вот матрица относительных весов:

weightmat <- matrix(c(0,3,6,4,0,5,7,2,0), nrow = 3, ncol = 3)

который я могу использовать для создания графика тепловой карты, используя ряд специальных методов, например, этот от plotrix:

color2D.matplot(weightmat, extremes = c("white", "red"))

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

weightcol <- matrix(c("#FFFFFF","#FF9292","#FF2424","#FF6D6D","#FFFFFF","#FF4949","#FF0000", "#FFB6B6", "#FFFFFF"), nrow = 3, ncol = 3)

До сих пор я занимался этим, создавая тепловые карты с различными специальными функциями (ggplot, plotrix и т. д.) и пытаясь отделить базовые данные от вывода или воспроизвести их расчеты. Однако я обнаружил, что доступ к этим данным затруднен, и мне интересно, может ли кто-нибудь предложить мне решение для преодоления этого пробела. Заранее спасибо.


person Robert    schedule 27.07.2017    source источник


Ответы (1)


Я не уверен, что вы можете извлечь значения из объекта color2D.matplot, но просмотрев файл documentation, похоже, используется функция color.scale. Вы можете найти свои значения с помощью:

color.scale(weightmat,extremes=c("white","red"))

Результат:

     [,1]        [,2]        [,3]       
[1,] "#FFFFFFFF" "#FF6D6DFF" "#FF0000FF"
[2,] "#FF9292FF" "#FFFFFFFF" "#FFB6B6FF"
[3,] "#FF2424FF" "#FF4949FF" "#FFFFFFFF"

Где дополнительные FF в конце обозначают непрозрачность, которую можно установить с помощью параметра альфа.

Вы можете раздеть те, у кого:

substr(color.scale(weightmat,extremes=c("white","red")),1,7)

Результат:

     [,1]      [,2]      [,3]     
[1,] "#FFFFFF" "#FF6D6D" "#FF0000"
[2,] "#FF9292" "#FFFFFF" "#FFB6B6"
[3,] "#FF2424" "#FF4949" "#FFFFFF"

Надеюсь это поможет!

person Florian    schedule 27.07.2017
comment
Идеально, как раз то, что я искал. - person Robert; 27.07.2017