По сути, я пытаюсь добавить вторую легенду к графику ggpairs
. В приведенном ниже примере графика я использую данные диафрагмы и запускаю randomForest
для получения прогнозов. Я рисую плотность по диагонали, диаграмму рассеяния в нижнем треугольнике, а корреляцию в верхнем треугольнике. Я раскрашиваю плотности и диаграмму рассеяния по предсказаниям randomForest
. Однако я раскрашиваю корреляционную сетку с помощью пользовательской функции (найдена здесь ).
Мне было интересно, возможно ли иметь легенду, отображающую виды (эта часть находится в приведенном ниже коде) ) и легенда, показывающая цвета корреляции. Это последняя часть, с которой у меня проблемы.
library(randomForest)
library(GGally)
# Get data
ir <- iris
# Create randomForest
rf <- randomForest::randomForest(Species~., data = ir)
pred <- rf$predicted
# Remove Species for plotting
ir <- ir[,-5]
# function to colour corr plot
my_fn <- function(data, mapping, method="p", use="pairwise", ...){
# grab data
x <- eval_data_col(data, mapping$x)
y <- eval_data_col(data, mapping$y)
# calculate correlation
corr <- cor(x, y, method=method, use=use)
# calculate colour based on correlation value
colFn <- colorRampPalette(c("dodgerblue4", "floralwhite", "firebrick1"), interpolate ='spline')
fill <- colFn(100)[findInterval(corr, seq(-1, 1, length=100))]
#make plot
ggally_cor(data = data, mapping = mapping, ...) +
theme_void() +
theme(panel.background = element_rect(fill=fill), panel.border=element_blank(), axis.line=element_line(),
strip.text = element_text(face="bold", colour="red", size = 5))
}
p <- ggpairs(ir,
mapping=ggplot2::aes(colour = pred), legend = 1,
upper=list(continuous = my_fn),
diag = list(continuous = "densityDiag"),
lower=list(continuous=wrap("points", size=.2))) +
theme(panel.border=element_blank(), axis.line=element_line(),
strip.text = element_text(face="bold", colour="red", size = 5))
p
Результат будет выглядеть примерно так:
ggpairs сюжет
Можно ли добавить вторую легенду, соответствующую цветам корреляционного графика? В моем примере 1 = красный, 0 = белый и -1 = синий для графика корреляции.
EDIT [Все еще пытаюсь решить этот вопрос, если у кого-то есть предложения, было бы здорово]