Карта мира с ggmap

Я использую ggmap и хочу, чтобы карта мира была сосредоточена на Австралии, и я могу легко построить геокодированные точки. ggmap, похоже, намного проще в использовании по сравнению с некоторыми другими пакетами сопоставления. Тем не менее, когда я переношу карту, используя код ниже, это ошибки.

gc <- geocode('australia') center  map <- get_map(location = center, source="google", maptype="terrain", zoom=0) Error: zoom must be a whole number between 1 and 21 

Из справки get_map: «zoom: map zoom», целое число от 0 (весь мир) до 21 (здание), значение по умолчанию 10 (город). Openstreetmaps ограничивает масштаб 18, а предел на картах тычинок зависит от типа карты. «auto» автоматически определяет масштаб для спецификаций ограничивающих полей, и по умолчанию используется значение 10 с параметрами центра / масштабирования ».

Изменение масштаба на один не означает ошибку для get_map, но для построения этой карты

 map <- get_map(location = center, source="google", maptype="terrain", zoom=1) ggmap(map) Warning messages: 1: In min(x) : no non-missing arguments to min; returning Inf 2: In max(x) : no non-missing arguments to max; returning -Inf 3: In min(x) : no non-missing arguments to min; returning Inf 4: In max(x) : no non-missing arguments to max; returning -Inf 

Похоже, долгота не тянет. Наконец, с увеличением 2, он работает, но не отображает карту всего мира

Итак, мой вопрос: как я могу использовать get_map для получения карты мира?

Информация о сеансе:

sessionInfo () R версия 2.15.0 (2012-03-30) Платформа: i386-pc-mingw32 / i386 (32-разрядная версия)

 locale: [1] LC_COLLATE=English_United Kingdom.1252 [2] LC_CTYPE=English_United Kingdom.1252 [3] LC_MONETARY=English_United Kingdom.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United Kingdom.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mapproj_1.1-8.3 maps_2.2-6 rgdal_0.7-12 sp_0.9-99 [5] ggmap_2.1 ggplot2_0.9.1 loaded via a namespace (and not attached): [1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2 grid_2.15.0 [5] labeling_0.1 lattice_0.20-6 MASS_7.3-17 memoise_0.1 [9] munsell_0.3 plyr_1.7.1 png_0.1-4 proto_0.3-9.2 [13] RColorBrewer_1.0-5 reshape2_1.2.1 RgoogleMaps_1.2.0 rjson_0.2.8 [17] scales_0.2.1 stringr_0.6 tools_2.15.0 

EDIT : Обновлено до ggplot2 v 0.9.3

Я попробовал что-то подобное недавно, но с небольшим успехом. Тем не менее, существует несколько способов сосредоточить карту мира от пакета map : см. Здесь , здесь и здесь . Используя код из последнего, вот пример, который центрирует карту мира по долготе 160, отображает местоположения зеркал CRAN (координаты, полученные с использованием функции geocode() из пакета ggmap) на карте мира, построенной с использованием ggplot2, и цветами Новой Зеландии (используя geom_polygon ). Центрирование карты по долготе 160 держит всю Африку слева от карты и большую часть Гренландии справа от карты.

 library(maps) library(plyr) library(ggplot2) library(sp) library(ggmap) # Get some points to plot - CRAN Mirrors Mirrors = getCRANmirrors(all = FALSE, local.only = FALSE) Mirrors$Place = paste(Mirrors$City, ", ", Mirrors$Country, sep = "") # Be patient tmp = geocode(Mirrors$Place) Mirrors = cbind(Mirrors, tmp) ################################################################################################### # Recentre worldmap (and Mirrors coordinates) on longitude 160 ### Code by Claudia Engel March 19, 2012, www.stanford.edu/~cengel/blog ### Recenter #### center <- 160 # positive values only # shift coordinates to recenter CRAN Mirrors Mirrors$long.recenter <- ifelse(Mirrors$lon < center - 180 , Mirrors$lon + 360, Mirrors$lon) # shift coordinates to recenter worldmap worldmap <- map_data ("world") worldmap$long.recenter <- ifelse(worldmap$long < center - 180 , worldmap$long + 360, worldmap$long) ### Function to regroup split lines and polygons # Takes dataframe, column with long and unique group variable, returns df with added column named group.regroup RegroupElements <- function(df, longcol, idcol){ g <- rep(1, length(df[,longcol])) if (diff(range(df[,longcol])) > 300) { # check if longitude within group differs more than 300 deg, ie if element was split d <- df[,longcol] > mean(range(df[,longcol])) # we use the mean to help us separate the extreme values g[!d] <- 1 # some marker for parts that stay in place (we cheat here a little, as we do not take into account concave polygons) g[d] <- 2 # parts that are moved } g <- paste(df[, idcol], g, sep=".") # attach to id to create unique group variable for the dataset df$group.regroup <- g df } ### Function to close regrouped polygons # Takes dataframe, checks if 1st and last longitude value are the same, if not, inserts first as last and reassigns order variable ClosePolygons <- function(df, longcol, ordercol){ if (df[1,longcol] != df[nrow(df),longcol]) { tmp <- df[1,] df <- rbind(df,tmp) } o <- c(1: nrow(df)) # rassign the order variable df[,ordercol] <- o df } # now regroup worldmap.rg <- ddply(worldmap, .(group), RegroupElements, "long.recenter", "group") # close polys worldmap.cp <- ddply(worldmap.rg, .(group.regroup), ClosePolygons, "long.recenter", "order") # use the new grouping var ############################################################################# # Plot worldmap using data from worldmap.cp windows(9.2, 4) worldmap = ggplot(aes(x = long.recenter, y = lat), data = worldmap.cp) + geom_polygon(aes(group = group.regroup), fill="#f9f9f9", colour = "grey65") + scale_y_continuous(limits = c(-60, 85)) + coord_equal() + theme_bw() + theme(legend.position = "none", panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank(), #axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank(), panel.border = element_rect(colour = "black")) # Plot the CRAN Mirrors worldmap = worldmap + geom_point(data = Mirrors, aes(long.recenter, lat), colour = "red", pch = 19, size = 3, alpha = .4) # Colour New Zealand # Take care of variable names in worldmap.cp head(worldmap.cp) worldmap + geom_polygon(data = subset(worldmap.cp, region == "New Zealand", select = c(long.recenter, lat, group.regroup)), aes(x = long.recenter, y = lat, group = group.regroup), fill = "blue") 

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

Я недавно получил ту же ошибку, и она сводилась к ggmap, не любимому широтами за пределами $ \ pm $ 80 °.

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

Вот как я это решил:

  • отдельная загрузка проецируемого изображения Mercator через BigMap
  • Широта нуждалась в некоторой осторожности: у меня были те же ошибки, которые вы показываете с ограничениями широты вне $ \ pm $ 80 °, когда я ожидал, что все будет хорошо, пока не будет закрыто OSM 85 °), но я не отследил их, так как я вообще нужны очень высокие широты.
  • Центр 0 ° / 0 ° был хорош для моей цели (я в Европе :-)), но вы можете, конечно же, отрезать изображение, когда это хорошо для вас, и оберните его самим cbind . Просто убедитесь, что вы знаете долготу своего разреза.
  • затем установите ограничительную рамку вашего изображения
  • и назначить соответствующие classы

Вот что я делаю:

 require ("ggmap") library ("png") zoom <- 2 map <- readPNG (sprintf ("mapquest-world-%i.png", zoom)) map <- as.raster(apply(map, 2, rgb)) # cut map to what I really need pxymin <- LonLat2XY (-180,73,zoom+8)$Y # zoom + 8 gives pixels in the big map pxymax <- LonLat2XY (180,-60,zoom+8)$Y # this may or may not work with google # zoom values map <- map [pxymin : pxymax,] # set bounding box attr(map, "bb") <- data.frame (ll.lat = XY2LonLat (0, pxymax + 1, zoom+8)$lat, ll.lon = -180, ur.lat = round (XY2LonLat (0, pxymin, zoom+8)$lat), ur.lon = 180) class(map) <- c("ggmap", "raster") ggmap (map) + geom_point (data = data.frame (lat = runif (10, min = -60 , max = 73), lon = runif (10, min = -180, max = 180))) 

результат:
Карта мира ggplot

Редактирование: я немного поиграл с вашей картой google, но я не получил правильность широт. 🙁

Проверьте встроенный файл конфигурации ggplot. Это может создавать карты, не требуя стороннего набора fragmentов. Он отлично подходит для простых карт и может использовать всю красоту, которая является ggplot.

http://docs.ggplot2.org/current/coord_map.html

  • Почему `vapply` безопаснее, чем` sapply`?
  • Анализ Квай-квадратов с использованием для цикла в R
  • Подстановка кадра данных на основе содержимого другого кадра данных
  • Выберите / назначьте data.table, когда имена переменных хранятся в символьном векторе
  • Преобразование строки в имя переменной
  • Оценить выражение, данное как строка
  • Есть ли более эффективная альтернатива, чем манипулирование строками для программной сборки формул?
  • Как удалить выбросы из набора данных
  • Как отсортировать данные по нескольким столбцам?
  • Разбиение строки на первом пространстве
  • Создайте штабелированный планшет, где каждый стек масштабируется, чтобы суммировать до 100%
  • Interesting Posts

    Запуск приложения с пользовательской комбинацией клавиш

    Как узнать, какие шрифты используются в выбранной части документа PDF

    Запуск CMD или BAT в бесшумном режиме

    Динамически Создать общий шаблон для шаблона

    как удалить только одно свойство стиля с помощью jquery

    Как я могу синхронизировать Android с Zune?

    Как я могу получить URL-адрес текущей вкладки из расширения Google Chrome?

    Получение ответа асинхронного запроса HttpWebRequest

    Возrotation n-й записи из запроса MySQL

    Код Outcommented Facelets по-прежнему вызывает выражения EL, такие как # {bean.action ()} и вызывает javax.el.PropertyNotFoundException на # {bean.action}

    Как перехватить ссылку на ссылку в UITextView?

    Ярлык для уничтожения приложения

    Существует ли ограничение длины заголовка HTTP-заголовка?

    Внимание: на этапе сборки ресурсов копирования Bundle содержится файл Info.plist этой цели

    Загадочный пробел между Bootstrap2 Navbar и строкой внизу

    Давайте будем гением компьютера.