Градиентная заливка карты

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Градиентная заливка карты

Сообщение VistaSV30 » 21 май 2020, 15:32

Добрый день!
Подскажите как сделать градиентную заливку карты районов Московской области в зависимости от показателя (fill = counties$Value).

Пока сделал так:
Изображение

Код: Выделить всё

library(broom); library(maps); library(maptools); library(rgeos); library(mapproj); library(scales)

radm <- readRDS("Geo/gadm36_RUS_2_sp.rds") # Карта России

library(sp)
rg <- radm[radm@data$NAME_1 == "Moskva",] 
counties <- tidy(rg, region = "NL_NAME_2") # конвертация в формат пригодный для ggplot2

set.seed = 100 # Данные для примера
df <- data.frame(unique(counties$id))
df$Value <- abs(rnorm(nrow(df), mean = 10, sd = 10))
names(df)[1] <- "Distr"

library(dplyr); library(ggplot2)
counties <- left_join(counties, df, by = c("id" = "Distr"))

library(scales)
ggplot() + geom_map(data = counties, aes(map_id = id),
                    map = counties, fill = counties$Value, color = "white") +
  expand_limits(x = counties$long, y = counties$lat) +
  scale_fill_gradient(low = "white", high = "blue") + # не получается градиент!!!
  coord_map("polyconic") 
Нужно, чтобы карта раскрашивалась градиентом от белого к синему.
scale_fill_gradient(low = "white", high = "blue") - это не получается.

Подскажите, что делать?

Спасибо!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Re: Градиентная заливка карты

Сообщение VistaSV30 » 22 май 2020, 11:19

Вроде бы, что-то начало получатся
Изображение

Может быть кому-то код пригодится

Код: Выделить всё

library(sp)
library(broom); library(maps); library(maptools); library(rgeos); library(mapproj); library(scales)
gadm <- readRDS("Geo/gadm36_RUS_2_sp.rds") # Карта России

rg <- gadm[gadm@data$NAME_1 == "Moskva",] # Московская область
counties <- tidy(rg, region = "NAME_2")

set.seed(1234) # Случайные значения - потом заменить на фактические
df <- rg@data
df$Value <- rnorm(nrow(df))

ggplot() + geom_map(data = df, aes(map_id = NAME_2, fill = Value, color = I("white")),
                    map = counties) +
  expand_limits(x = counties$long, y = counties$lat) +
  scale_fill_gradient(low = "green", high = "darkgreen") +
  coord_map("polyconic")
Сейчас еще сделаю, чтоб фактические данные, а не случайные подставлялись и порядок!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость