Подтвердить что ты не робот

Указание цветовой шкалы для карт в 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

4b9b3361

Ответ 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

Привет, я хочу сделать снимок, откуда я сделал выборку. Теперь, Как я могу заполнить точное местоположение цветом градиента на основе данных, которые я генерировал.