Очистка карты с помощью 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)
который производит
Вы можете посмотреть другие варианты, чтобы контролировать размеры бина, если хотите. Но, как вы можете видеть, он "сглаживает" данные, беря средние значения внутри бункеров.