Градиент из n цветов, начиная от цвета 1 и цвета 2
Я часто работаю с ggplot2
, что делает градиенты приятными (нажмите здесь для примера). Мне нужно работать в базе, и я думаю, что scales
можно использовать там, чтобы создавать цветовые градиенты, но я сильно не знаком с тем, как это сделать. Основная цель - создать палитру из n цветов, которая варьируется от x до цвета y. Однако решение должно работать на базе. Это была отправная точка, но не было места для ввода n.
scale_colour_gradientn(colours=c("red", "blue"))
Я хорошо знаю:
brewer.pal(8, "Spectral")
из RColorBrewer
. Я больше ищу подход, похожий на то, как ggplot2
обрабатывает градиенты, которые говорят, что у меня есть эти два цвета, и я хочу 15 цветов на этом пути. Как я могу это сделать?
Ответы
Ответ 1
colorRampPalette
может быть вашим другом здесь:
colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"
И просто чтобы показать, что он работает:
plot(rep(1,10),col=colfunc(10),pch=19,cex=3)
![enter image description here]()
Ответ 2
Просто для продолжения предыдущего ответа colorRampPalette
может обрабатывать более двух цветов.
Итак, для более расширенного типа "тепловой карты" вы можете...
colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)
Полученное изображение:
![enter image description here]()
Ответ 3
Попробуйте следующее:
color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)
![введите описание изображения здесь]()
Ответ 4
Вышеприведенный ответ полезен, но на графиках трудно отличить темные градиенты черного. Один из вариантов, который я нашел, - использовать градиенты серого цвета следующим образом
palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))
Дополнительная информация о шкале серого здесь.
Добавлен
Когда я использовал приведенный выше код для разных цветов, таких как синий и черный, градиенты были не такими ясными.
heat.colors()
кажется более полезным.
Этот документ содержит более подробную информацию и параметры. pdf