Построение карты Google с помощью ggplot в R

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

Я разочарован, потому что не могу построить запрошенную карту в R. Я попробовал несколько пакетов, таких как read.jpeg и png, но это не совсем сработало.

Коды R:

#query google map
al1 <- GetMap(center=c(32.362563,-86.304474), zoom=11, destfile = "al2.jpeg", 
       format="jpg",maptype="roadmap")

#load only specific states
alabama <- subset(all_states, region %in% c("alabama"))

#population
p1 <- ggplot()
p1 <- p1 + geom_polygon(data=alabama, 
      aes(x=long, y=lat, group=group), colour="white", fill="grey10")
p1 <- p1 + geom_point(data=quote, aes(x=IntPtLon, y=IntPtLat, size=TotPop, 
      color=TotPop),colour="coral1") + scale_size(name="Total Pop")

введите описание изображения здесь

РЕДАКТИРОВАТЬ:

Вот мой примерный результат. Я все еще хочу:

  • Измените масштаб размеров точек, потому что они кажутся маленькими на карте.
  • Сделайте точки прозрачными или незакрашенными, чтобы карта была видна.

введите описание изображения здесь

al1 <- get_map(location = c(lon = -86.304474, lat = 32.362563), zoom = 11, maptype = 'terrain')
al1MAP <- ggmap(al1)+ geom_point(data=quote_mgm, aes(x=IntPtLon, y=IntPtLat, size=TotPop))

person Ken    schedule 24.04.2012    source источник
comment
вы можете проверить пакеты ggmap и OpenStreetMap, оба из которых поддерживают построение растровых изображений ggplot2.   -  person Ian Fellows    schedule 24.04.2012
comment
Вот хороший пример из вики, который может быть полезно проверить: github.com/hadley/ggplot2/wiki/   -  person John Colby    schedule 24.04.2012
comment
Ага! Я только что нашел этот сайт и получил свой ответ. Обратной стороной является то, что для построения графика требуется некоторое время, поэтому я проверю ggmap и OSM. Спасибо всем!   -  person Ken    schedule 24.04.2012
comment
если вы покажете нам код, который вы использовали для создания второго примера, я уверен, что кто-то покажет вам, как добавить прозрачность (например, используя alpha=0.5 вне определения сопоставления, как вы это делали с цветом точки выше) и изменить масштаб точек (см. параметр range в ?scale_size)   -  person Ben Bolker    schedule 25.04.2012
comment
Хорошо, добавление scale_area(range=c(0,25)) помогло. Спасибо за подсказку @BenBolker   -  person Ken    schedule 25.04.2012


Ответы (1)


Это то, что вам нужно. Он использует пакет ggmap, что упрощает процесс. См. ?get_map и ?ggmap для получения дополнительных сведений. Отличный ресурс доступен в The R Journal.

library(ggmap)
al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), zoom = 11, maptype = 'roadmap')
al1MAP = ggmap(al1)
al1MAP

введите описание изображения здесь

person Sandy Muspratt    schedule 24.04.2012
comment
Да, в дополнение к этому, я хочу нанести точки в верхней части этой карты (возможно, используя geom_point), но в то же время я хочу сделать ее визуально привлекательной. Я не хочу, чтобы мои точки скрывали / закрывали информацию о существующей карте. Любая идея? - person Ken; 25.04.2012
comment
сделать точки полупрозрачными? - person Ben Bolker; 25.04.2012
comment
Вы можете добавить дополнительные слои в al1Map, используя обычные геометрии ggplot2. Итак, чтобы добавить очки, подойдет что-то вроде al1MAP + geom_point(data=data, aes(x=x, y=y)). Что касается нежелания покрывать существующую информацию о карте - я не могу вам здесь помочь. Может быть, вы можете попробовать разные стили карты, чтобы найти что-то менее детализированное. - person Sandy Muspratt; 25.04.2012
comment
@Sandy, я не думаю, что ggplot2 поддерживает слои ggmap. Я получаю следующее сообщение об ошибке: ggplot2 не знает, как обращаться с данными класса «неравный». - person Paul Rigor; 01.05.2013
comment
@PaulRigor, у меня работает. Создайте фрейм данных, достаточно одной точки: data = data.frame(x = -86.35, y = 32.4) Добавьте точку в al1MAP: al1MAP + geom_point(data = data, aes(x = x, y = y), colour = "red", size = 5) Я вижу большую красную точку в реке к западу от шоссе 65. - person Sandy Muspratt; 01.05.2013
comment
@ Сэнди, ты прав! Переменные x, y моего data.frame имеют неправильный тип. Работает как описано. Спасибо! - person Paul Rigor; 01.05.2013