Создать цветовую палитру с фиксированными точками останова в R - PullRequest
0 голосов
/ 04 мая 2019

Уважаемое сообщество stackoverflow,

У меня есть вектор с различными значениями корреляции, который я хочу связать с соответствующими цветовыми кодами (скажем, -1 = «Темно-красный», 0 = «Светло-серый», 1 = «Темно-зеленый»). Так, например, если мое максимальное значение в корреляции будет 0,75, соответствующее значение цвета должно быть «светлее зеленого». Есть ли решение для достижения этой цели в R?

Спасибо!

1 Ответ

0 голосов
/ 04 мая 2019

То, что вы ищете, это ggplot2::scale_colour_gradient2().Поскольку вы не предоставили никаких примеров данных (которые я настоятельно рекомендую в будущем; они поощряют ответы и помогают ответчикам адаптировать свои ответы к вашей фактической структуре данных), я составил следующий простой пример:

library(ggplot2)
set.seed(123)
n <- 1000
corrs <- seq(-0.9, 0.9, length.out = 10)
vals <- matrix(0, nrow = 0, ncol = 2)
for ( corr in corrs ) {
    tmp <- mvtnorm::rmvnorm(n/10, sigma = matrix(c(1, corr, corr, 1), nrow = 2))
    # print(cor(tmp)) # If you want to do QA
    vals <- rbind(vals, tmp)
}
df <- data.frame(var1 = vals[ , 1], var2 = vals[ , 2],
                 corr = rep(corrs, each = n/10))
ggplot(df, aes(x = var1, y = var2, colour = corr)) +
    geom_point(shape = 1) +
    scale_colour_gradient2(low = "darkred", mid = "gray", high = "darkgreen")

enter image description here

...