Как изменить цветовую схему в corrplot

Я использую corrplot в R, чтобы визуализировать матрицу коэффициентов корреляции следующим образом.

library(corrplot) 
library(datasets)
corrplot(abs(cor(mtcars)), method="color", tl.pos="n", cl.lim = c(0,1))

введите описание изображения здесь

Цветовая схема по умолчанию - синий. Однако я хотел бы изменить его на красное. Я знаю, что мне нужно использовать colorRampPalette, чтобы указать нужные цвета. Однако я не мог понять, какие цветовые коды использовать. Может ли кто-нибудь помочь мне с этим, пожалуйста?

Спасибо!


person LaTeXFan    schedule 09.06.2015    source источник
comment
Вы пробовали Color Picker?   -  person C_B    schedule 10.06.2015
comment
При обращении за помощью в построении графика лучше всего включить воспроизводимый пример с образцом входных данных. Кроме того, поскольку corrplot не является функцией в базе R, четко укажите, какие пакеты вы используете,   -  person MrFlick    schedule 10.06.2015
comment
Я думаю, что в середине (раздел: Использование другого цветового спектра) этой страницы есть то, что вы ищете: cran.r-project.org/web/packages/corrplot/vignettes/   -  person SabDeM    schedule 10.06.2015
comment
@MrFlick Я внес некоторые изменения. Думаю, вы можете воспроизвести это сами.   -  person LaTeXFan    schedule 10.06.2015


Ответы (2)


Если вы хотите использовать красный цвет, вы можете определить свой собственный colorRampPalette, как вы уже упоминали. Просто обратите внимание, что график, кажется, устанавливает диапазон цветов от -1 до 1 (даже если вы измените значение cl.lim). Таким образом, вам все еще нужно определить цвета для диапазона от -1 до 0 в рампе. Например

corrplot(abs(cor(mtcars)), method="color", tl.pos="n", 
    cl.lim=c(0,1), col=colorRampPalette(c("blue","white","red"))(200))

будет производить

введите описание изображения здесь

и хотя мы определили «синий» в цветовой палитре, он не отображается, потому что мы ограничили цветовую полосу значениями больше 1.

Эту "неиспользованную" часть цветового градиента можно увидеть и в оригинальной версии, если вынуть cl.lim

corrplot(abs(cor(mtcars)), method="color", tl.pos="n")

введите описание изображения здесь

person MrFlick    schedule 09.06.2015

Функция colorRampPalette возвращает функцию, которая принимает числовой аргумент:

corrplot(abs(cor(mtcars)), method="color",
         col= colorRampPalette(c("white","pink", "red"))(10) ,
         tl.pos="n", cl.lim = c(0,1))

введите описание изображения здесь

По умолчанию определяется этот цветовой спектр:

col2 <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7",
        "#FFFFFF", "#D1E5F0", "#92C5DE", "#4393C3", "#2166AC", "#053061"))  

Это даст вам более широкий диапазон красных оттенков:

colnew <- colorRampPalette(c("#670000", "#B20000", "#D60000", "#F40000", "#FD0000", "#FFFFFF"))

И я подумал, что добавление «коричневого» в конце расширило диапазон для лучшего визуального разделения:

col= colorRampPalette(c("white","lightpink", "red","brown"))(10)
person IRTFM    schedule 09.06.2015
comment
Спасибо. Я предполагаю, что другой способ - просто изменить порядок цветовых кодов в col2 по умолчанию. - person LaTeXFan; 10.06.2015
comment
Кстати, а можно ли убрать белую линию сетки, пожалуйста? Я пробовал addgrid.col = NULL. Это не работает. - person LaTeXFan; 10.06.2015