Как изменить цветовую палитру для GGally::ggpairs?

Это тот же вопрос, что и в Определяемая пользователем цветовая палитра в R и ggpairs или есть способ изменить цветовую палитру для GGally::ggpairs с помощью ggplot?

только то, что решения там больше не работают.


Я также хочу изменить цветовую палитру, но есть ли способ изменить цветовую палитру для GGally::ggpairs с помощью ggplot? больше не работает. Что делать?

MWE:

library(GGally)
library(ggplot2)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]
ggpairs(
  diamonds.samp[,1:2],
  mapping = ggplot2::aes(color = cut),
  upper = list(continuous = wrap("density", alpha = 0.5), combo = "box"),
  lower = list(continuous = wrap("points", alpha = 0.3), combo = wrap("dot", alpha = 0.4)),
  diag = list(continuous = wrap("densityDiag")),
  title = "Diamonds"
)

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

я хотел бы добавить

scale_colour_manual(values=c('red','blue','green','red','blue'))

(очевидно, это просто фиктивный код) и получить что-то вроде (я не закрашивал все точки):

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


person Make42    schedule 12.01.2016    source источник
comment
Пожалуйста, не ленитесь и предоставьте хотя бы MVE.   -  person    schedule 12.01.2016
comment
@Pascal: Извините, забыл строчку. Пожалуйста, попробуйте еще раз.   -  person Make42    schedule 12.01.2016
comment
Каков ваш ожидаемый результат? Потому что я получаю цветные цифры с вашим кодом.   -  person    schedule 12.01.2016
comment
@Pascal: Конечно :-). Я хочу изменить автоматически устанавливаемые цвета. Привожу (очень некрасивый) пример.   -  person Make42    schedule 12.01.2016
comment
До сих пор не ясно, как это (должно было) работать.   -  person    schedule 12.01.2016
comment
@Pascal: Если вы запустите код, который вы видите в MWE, вы получите первый график. Я уверен, что вы тоже понимаете этот сюжет, верно? Цвета здесь красные, какие-то песочно-желтые, зеленые, синие, мангента, верно? Я хочу изменить эти цвета. Например, мне все равно, какие цвета. Например, «красный», «синий», «зеленый», «красный», «синий». Я не уверен, где пример неясен.   -  person Make42    schedule 12.01.2016
comment
Это будет не способ сделать это, но это способ... просто перезаписать каждый график в матрице... for(i in 1:2) { for(j in 1:2){ p[i,j] <- p[i,j] + scale_fill_manual(values=c("red", "blue", "green", "yellow", "black")) + scale_color_manual(values=c("red", "blue", "green", "yellow", "black")) } }   -  person user20650    schedule 12.01.2016
comment
@ user20650: У меня было похожее решение (даже немного более уродливое), прежде чем оно сломалось с новой версией GGally. Я думаю, ваше решение достаточно хорошо для меня: оно не станет более элегантным, чем это. Если хотите, пожалуйста, поместите это как ответ.   -  person Make42    schedule 12.01.2016
comment
хорошо сделано. Должен быть способ сделать это в ggpairs, но я совсем не знаком с этим... так что достаточно хорошо   -  person user20650    schedule 12.01.2016
comment
@ user20650: не думаю, что есть. GGally очень сложно настроить — вы всегда в конечном итоге взламываете.   -  person Make42    schedule 12.01.2016


Ответы (1)


Одно из решений состоит в том, чтобы извлечь каждый график из ggmatrix, добавить новый scale_, а затем переназначить его обратно в матрицу.

Пример

library(GGally)
library(ggplot2)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]

p <- ggpairs(
  diamonds.samp[,1:2],
  mapping = ggplot2::aes(color = cut),
  upper = list(continuous = wrap("density", alpha = 0.5), combo = "box"),
  lower = list(continuous = wrap("points", alpha = 0.3), combo = wrap("dot", alpha = 0.4)),
  diag = list(continuous = wrap("densityDiag")),
  title = "Diamonds"
)

Прокрутите каждый график, изменяя соответствующие масштабы

for(i in 1:p$nrow) {
  for(j in 1:p$ncol){
    p[i,j] <- p[i,j] + 
        scale_fill_manual(values=c("red", "blue", "green", "yellow", "black")) +
        scale_color_manual(values=c("red", "blue", "green", "yellow", "black"))  
  }
}

p

Давать

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

person user20650    schedule 12.01.2016