Как покрасить в соответствии с уровнями факторов в ggally_cor с ggpairs?
Я использую ggpairs для данных с 3 группами. Проблема состоит в том, что не все переменные имеют все группы, и поэтому для некоторых корреляций нужно только показать 2 группы. Из-за автоматического алфавитного упорядочения групп по ggpairs раскраска не согласована. Первый цвет всегда присваивается первому уровню фактора. (Например: группа 1 = красный, группа 2 = синий, группа 3 = зеленый. Но с переменными, имеющими только вторую и последнюю группу: группа 2 = красная и группа 3 = синий.) См. Этот рисунок: цвета не совпадают с группами. Рисунок сгенерирован с использованием следующего кода:
ggpairs(output.b[,c(13,17,18)], aes(colour = as.factor(output.b$country), alpha = 0.4),
upper = list(continuous = function(data, mapping, ...) {
ggally_cor(data = output.b, mapping = mapping) + scale_colour_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}),
lower = list(continuous = function(data, mapping, ...) {
ggally_points(data = output.b, mapping = mapping) + scale_colour_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}),
diag = list(continuous = function(data, mapping, ...) {
ggally_densityDiag(data = output.b, mapping = mapping) + scale_fill_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}))
Чтобы изменить цвет "group3:" в верхних корреляциях на синий, я должен выделить эти графики и сделать scale_colour_manual
как в следующем коде:
p <- ggpairs(...)
p[1,2] <- p[1,2] + scale_colour_manual("group3: 0.113" = "#F8766D")
p[1,3] <- p[1,3] + scale_colour_manual("group3: 0.268" = "#F8766D")
Это слишком громоздко, чтобы делать все это вручную, так как я должен сделать несколько таких графиков с разными группировками, и у меня есть еще много переменных... Есть ли способ реализовать это автоматически в ggally_cor?