R ggmap और ggplot2 पैकेज के साथ रॉबिन्सन प्रक्षेपण को निर्दिष्ट करने के लिए proj4 का उपयोग करें?


13

मैं रॉबिन्सन प्रक्षेपण में इस नक्शे को प्रोजेक्ट करना चाहता हूं:

library(ggmap)
world <- map_data("world")
ggplot() + geom_path(data = world, 
                              aes(long, lat, group = group))

यहाँ छवि विवरण दर्ज करें

और मैं प्रक्षेपण को "रॉबिन्सन" में बदलना चाहूंगा (मेरे पिछले सवाल के जवाब से सलाह: विकिपीडिया उपयोग से वैश्विक जलवायु क्षेत्र का नक्शा क्या प्रक्षेपण करता है?

मुझे इस प्रक्षेपण के डिफ़ॉल्ट कार्यान्वयन को खोजने में एक कठिन समय था, मैंने proj4पुस्तकालय का उपयोग करने के लिए निम्नलिखित कार्य किया :

library(proj4)
robinson <- project(cbind(world$long, world$lat), 
                    proj = "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")

मैंने कई तरीकों की कोशिश की है, जिनमें शामिल हैं:

# using ggmap::get.map()
get_map("world", projection = mapprojection(robinson))
# using ggplot2::coord_map
coord_map(projection = robinson)
# and sp::coordinates:
library(sp)
coordinates(world) <- ~ lat + long
gridded(world) <- TRUE # returns error
proj4string(world) <- CRS(robinson)

लेकिन इनमें से कोई भी काम नहीं करता है। क्या यह एक टाइपो है, या मुझे इस पद्धति के बारे में कुछ मौलिक याद आ रही है?

जवाबों:


11

यह ggplot2 के भीतर से रॉबिन्सन को संभालने के लिए मुश्किल हो सकता है।

आपके द्वारा पता लगाया गया AFAIK ggplot2 ord_map समाधान मैपरोजेजेक्ट पैकेज में परिभाषित प्रक्षेपण सूचना का उपयोग करेगा । वहाँ कुछ उपलब्ध हैं लेकिन दुर्भाग्य से रॉबिन्सन उनमें से एक नहीं है और मुझे यकीन नहीं है कि आप अपना खुद का जोड़ सकते हैं।

इसके अलावा - worldआपके द्वारा उपयोग किए जा रहे डेटा (ggmap पैकेज से मैं अनुमान लगाता हूं) पहले से ही एक डेटा फ्रेम क्लास है। तो आप इसे आसानी से (?) आसानी से अस्वीकार नहीं कर पाएंगे।

मेरा सुझाव ggplot2 को पास करने से पहले आकार फ़ाइल का उपयोग करके और भौगोलिक डेटा को संभालने से खरोंच से शुरू होगा। प्राकृतिक पृथ्वी डेटा का उपयोग करके मेरा सरसरी समाधान इस कदम का अनुसरण करेगा:

library(ggplot2)
library(grid)

# get data
download.file(url="http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip", "ne_110m_admin_0_countries.zip", "auto")
unzip("ne_110m_admin_0_countries.zip")
file.remove("ne_110m_admin_0_countries.zip")

# read shape file using rgdal library
library(rgdal)
ogrInfo(".", "ne_110m_admin_0_countries")
world <- readOGR(".", "ne_110m_admin_0_countries")
summary(world)  
plot(world, col = "grey")  

readOGR prj फ़ाइल से प्रक्षेपण के बारे में जानकारी का उपयोग करता है और सारांश अब मुझे बताता है कि अब दुनिया है

Object of class SpatialPolygonsDataFrame
Coordinates:
   min       max
x -180 180.00000
y  -90  83.64513
Is projected: FALSE 
proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]

और ऐसा दिखता है:

यहाँ छवि विवरण दर्ज करें

चलो रॉबिन्सन में बदल:

worldRobinson <- spTransform(world, CRS("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"))
summary(worldRobinson)  
plot(worldRobinson, col = "grey")  

सारांश अब है:

Object of class SpatialPolygonsDataFrame
Coordinates:
        min      max
x -16810131 16810131
y  -8625154  8343004
Is projected: TRUE 
proj4string :
[+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84=0,0,0]

और ऐसा दिखता है:

यहाँ छवि विवरण दर्ज करें

यहां से आपको ggplot के साथ जारी रखने में सक्षम होना चाहिए (गढ़वाले की आवश्यकता हो सकती है)।


7

अब आप इसे सीधे ggaltपैकेज के साथ कर सकते हैं :

library(ggplot2)
library(ggalt)
library(ggthemes)

wrld <- map_data("world")

gg <- ggplot()
gg <- gg + geom_map(data=wrld, map=wrld,
                    aes(x=long, y=lat, map_id=region),
                    color="#2b2b2b", size=0.15, fill=NA)
gg <- gg + coord_proj("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
gg <- gg + theme_map()
gg

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.