Указание цветовой шкалы для карт в ggplot
Сложность настройки цветовых шкал для карт в ggplot. Мне нужна шкала серого. Очень благодарен за идею, в которой я ошибаюсь. Я также задаюсь вопросом, есть ли более эффективный способ получения цветовой переменной в ggplot (т.е. Путем прикрепления ее к "усиленным" данным)?
library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region)) # using rows as a dummy variable
states$variable <- var$Freq[match(states$region,var$Var1)]
map <- ggplot(states, aes(x=long, y=lat)) +
geom_polygon(aes(group=group, fill=variable), col=NA,lwd=0)
map + scale_colour_gradient(low='white', high='grey20')
map + scale_colour_grey()
![enter image description here]()
Ответы
Ответ 1
Вам нужно использовать scale_fill_*
, а не scale_color_*
. Для геометрии многоугольника цвет заливки полигонов связан с эстетикой fill
, а не с эстетикой color
. В общем, функция, используемая для изменения деталей конкретного масштаба, - это scale_
aesthetic_name _
type_of_scale, например. scale_fill_gradient
.
Ответ 2
Этот код работает для меня.
library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region))
states$variable <- var$Freq[match(states$region,var$Var1)]
map <- ggplot(states, aes(x=long, y=lat,fill=variable,group=group)) + geom_polygon()
map + scale_fill_gradient(low='white', high='grey20')
Простым способом обработки проблем с дискретными переменными является создание "поддельной" непрерывной палитры с использованием функции цветовой палитры. См. Приведенный ниже пример.
Определите цветовую палитру, здесь я использовал шестнадцатеричные коды для черно-белого, но вы можете использовать любые цвета
gs.pal <- colorRampPalette(c("#FFFFFF","#000000"),bias=.1,space="rgb")
Теперь создайте некоторые поддельные данные
x <- rnorm(100)
dat <- data.frame(cbind(x))
dat$fac <- as.factor(sort(rep(1:5,20)))
dat$y <- x * as.numeric(dat$fac)
Затем зарисуйте его с помощью функции ggplot scale_*
type _manual
в этом случае, так как его цвет
вы использовали бы scale_colour_manual
, но выше вы использовали бы scale_fill_manual
ggplot(dat,aes(x=x,y=y,colour=fac))+geom_point()+scale_colour_manual(values=gs.pal(5))
Ответ 3
Привет, я хочу сделать снимок, откуда я сделал выборку. Теперь, Как я могу заполнить точное местоположение цветом градиента на основе данных, которые я генерировал.