Можно ли использовать отдельные фиксированные цвета на карте с помощью ggplot geom_sf - PullRequest
2 голосов
/ 02 апреля 2020

Моя проблема в том, что у меня есть sf-объект, который я хочу отобразить с помощью ggplot и заполнить округа цветом факторной переменной. Я определил для каждого уровня фактора цвет, который должен быть зафиксирован, даже если подмножество фрейма данных.

Моя проблема: я вижу в легенде мой фактор с правильными цветами, я вижу свою карту, но округа не заполнены любым цветом.

Мой тестовый набор данных находится здесь: https://wolke.netzbegruenung.de/s/wPfNEPrSkcsLaHX

Первый шаг:

Я определяю переменную Indicator, которая находится между 0 и любое положительное значение. Значения выше 1 являются аламентами. Нормальными являются значения ниже 0,3. Чтобы получить прогноз, что произойдет в будущем, я нанесу на карту мои округа в цвет категоризованной переменной индекса. Для этого я определяю data.frame с цветами:

brk <- c(0,0.1,0.5,0.6,0.8,0.9,1,Inf)
col <- c("greenyellow","chartreuse4","gold",
         "darkgoldenrod1","orange","orangered3","red")
lab <- c("up to 0.1","up to 0.3","up to 0.6",
         "up to 0.8","up to 0.9","up to 1","1 and more")

dfcol <-cbind.data.frame(lab,col) %>%
  mutate(lab = factor(lab, levels = lab)

Второй шаг:

Я строю с этим кодом:

ggplot()+
  geom_sf(data = dfgeo,aes(fill = lab)) +
  scale_fill_manual(values = col,
                    limits = brk[1:7],
                    labels = lab ) +
  theme_void()

Результат:

Я вижу свой фактор Лаборатория переменных в легенде.

Я вижу свою карту с границами всех округов, в которых я заинтересован.

Но округа не заполнены каким-либо цветом Я присваиваю фактор-переменную lab.

В чем моя ошибка?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 02 апреля 2020

Одним из возможных решений является полное слияние обоих ваших фреймов данных для отображения всех значений:

library(dplyr)
DF <- full_join(dfgeo, dfcol)

library(ggplot2)
ggplot(data = DF,aes(fill = lab))+
  geom_sf() +
  scale_fill_manual(values = col)

enter image description here

ответь на свой вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...