Очистка карты с помощью geom_tile

Благодаря помощи некоторых пользователей на этом сайте, я смог получить хороший график для некоторых данных, используя geom_point. ( Получите границы, чтобы пройти через штаты) Однако сейчас я пытаюсь навести порядок, так как у меня есть еще годы, чтобы планировать и хочу убедиться, что сюжет работает и предоставляет хорошую информацию. После некоторых дальнейших исследований кажется, что geom_tile на самом деле будет лучше для этого, поскольку он будет уклоняться от точек и использовать градиент.

Проблема, с которой я сталкиваюсь - заставить работать код с geom_tile. Это не заговор, и я не знаю почему.

Вот набор данных:

https://www.dropbox.com/s/0evuvrlm49ab9up/PRISM_1895_db.csv?dl=0

Вот оригинальный код с geom_points:

PRISM_1895_db <- read.csv("/.../PRISM_1895_db.csv")

regions<- c("north dakota","south dakota","nebraska","kansas","oklahoma","texas","minnesota","iowa","missouri","arkansas", "illinois", "indiana", "wisconsin")
ggplot() + 
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group)) +
  geom_point(data = PRISM_1895_db, aes(x = longitude, y = latitude, color = APPT), alpha = .5, size = 3.5) +
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group), color="white", fill=NA)

И вот код, который я пробовал, но ни одна из данных не отображается.

ggplot() + 
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group)) +
  geom_tile(data = PRISM_1895_db, aes(x = longitude, y = latitude, fill = APPT), alpha = 0.5, color = NA)
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group), color="white", fill=NA)

1 ответ

Решение

geom_tile нужны ваши значения x и y для выборки на регулярной сетке. Нужно уметь укладывать поверхность на прямоугольники. Таким образом, ваши данные нерегулярно отбираются, невозможно разделить необработанные данные на кучу красивых плиток.

Одним из вариантов является использование stat_summary2d слой, чтобы разделить ваши данные на блоки и рассчитать среднее значение APPT для всех точек в этом блоке. Это позволит вам создавать обычные плитки. Например

ggplot() + 
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group)) +
  stat_summary2d(data=PRISM_1895_db, aes(x = longitude, y = latitude, z = APPT)) +
  geom_polygon(data=subset(map_data("state"), region %in% regions), aes(x=long, y=lat, group=group), color="white", fill=NA)

который производит

Вы можете посмотреть другие варианты, чтобы контролировать размеры бина, если хотите. Но, как вы можете видеть, он "сглаживает" данные, беря средние значения внутри бункеров.

Другие вопросы по тегам