2014-12-26 4 views
3

Я использую R 3.1.2, пытаясь создать choropleth, используя карту мира. Причуда заключается в том, что, поскольку моя аудитория находится в Азии, мне нужно вернуть карту. Из документации кажется, что nowrapRecenter() идеально подходит для этого, но я считаю, что он не работает так, как рекламируется. Например, начните без центрирования:Правильное использование nowrapRecenter()

library(maps) 
library(maptools) 
library(rgdal) 
data(wrld_simpl) 
plot(wrld_simpl) 

Теперь пытаются центрирования на 148E долготы, чтобы переместить Азию ближе к центру карты в то время как расщепление в несколько масс суши, как это возможно в левом/правом полях:

library(maps) 
library(maptools) 
library(rgdal) 
data(wrld_simpl) 
world <- nowrapRecenter(wrld_simpl,offset=148,avoidGEOS=TRUE) 
plot(world) 

Что вы получаете, это немного грязно. Мало того, что карта сосредоточена на 180 ° долготы, но есть царапины по всей карте, где полигоны, которые nowrapRecenter() должны были быть разделены и снова закрыты слева/справа, распространяются по всей ширине карты. На самом деле, повторное включение не работает чисто для любого выбранного смещения.

Аналогичный вопрос пришел before, а в заключительном комментарии был приведен пример использования nowrapRecenter(), но он больше не работает. Каков наилучший способ повторного размещения карты мира (с использованием SpatialPolygons) и правильного разделения полигонов налево/вправо?

Спасибо!

+0

Ошибка в recenter (nowrapSpatialPolygons (obj, offset = offset, eps = eps,: Ошибка при оценке аргумента 'obj' при выборе метода для функции 'recenter ': Ошибка в loadNamespace (имя): нет пакета под названием' gpclib ' – lawyeR

+0

А, вам, вероятно, потребуется наличие библиотек sp и rgeos (или gpclib, но будьте осторожны), установленных в вашей среде R. Если они там , они должны быть загружены автоматически. Извините за это! – user4294565

ответ

0

Это лишь частичный ответ, поэтому, если он не является адекватным, дайте мне знать, и я удалю его.

Проблема заключается в том, что преобразование проекции Меркатора выходит из строя вблизи полюсов. Если вы хотите исключить Гренландию и Антарктику, это работает.

library(maptools) 
data(wrld_simpl) 
wrld <- wrld_simpl[!(wrld_simpl$NAME %in% c("Greenland","Antarctica")),] 
library(ggplot2) 
ggplot(wrld,aes(x=long,y=lat,group=group))+ 
    geom_polygon(fill="white",color="grey30")+ 
    coord_map(orientation=c(90,0,148))+ 
    scale_x_continuous(breaks=c(0,60,120,180,-120,-60))+ 
    theme_bw() 

Даже с этим ограничением, nowrapRecenter(...) не удалось.

+0

Любопытно, не так ли, потому что это именно та проблема, с которой, похоже, теперь был разработан метод nowrapRecenter(). Интересно, что что-то изменилось за кулисами, поэтому что функция теперь работает больше? Большое спасибо за альтернативный способ сделать это! К сожалению, в этом конкретном случае A ntarctica и Гренландия являются важными для данных. Но, пожалуйста, не удаляйте свой ответ. Это очень полезно знать! – user4294565

Смежные вопросы