2013-05-02 5 views
11

मैं एक छवि पर अमेरिका का नक्शा आकर्षित करना चाहता हूं, लेकिन फिर महासागरों को भरना चाहता हूं।मैं अमेरिका के मानचित्र में सागर नीले रंग को कैसे रंग सकता हूं?

यहाँ मेरी प्रारंभिक बिंदु है:

library(maps) 
library(graphics) 
image(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"), 
     xlab = "lon", ylab = "lat") 
map("state", add = TRUE) 

enter image description here

लेकिन मैं अटलांटिक महासागर और मैक्सिको की खाड़ी चाहते हैं किसी गहरे रंग में भरे जाने हैं।

+1

यह शायद नीली पृष्ठभूमि के साथ आसान शुरुआत होगी और फिर छवि/तापमैप पर राज्य सीमाओं को मुखौटा करने के लिए। –

+1

या समुद्र के लिए एक अलग बहुभुज है (मुझे लगता है कि यदि आपके पास पहले से ही बहुभुज नहीं है तो 'rgeos' में एक differencing function है)। –

उत्तर

19

अच्छा सवाल! यह कैसा है? screen grab

library(maps) 
image(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"), 
     xlab = "lon", ylab = "lat") 
map("state", add = TRUE) 

library(grid) 
outline <- map("usa", plot=FALSE) # returns a list of x/y coords 
xrange <- range(outline$x, na.rm=TRUE) # get bounding box 
yrange <- range(outline$y, na.rm=TRUE) 
xbox <- xrange + c(-2, 2) 
ybox <- yrange + c(-2, 2) 
# create the grid path in the current device 
polypath(c(outline$x, NA, c(xbox, rev(xbox))), 
     c(outline$y, NA, rep(ybox, each=2)), 
     col="light blue", rule="evenodd") 

मैं (पीछे grid आदमी) ग्रिड रास्तों (pdf here) पर हाल ही में आर-जर्नल लेख पॉल मुरेल के पढ़ने के बाद इस समस्या का समाधान बारे में जाना।

याद रखें:

पॉल Murrell "यह तुम क्या ड्रा नहीं है, यह आप क्या ड्रा मत है"

+0

+1 अच्छा समाधान। आपके स्रोतों को पूर्ण क्रेडिट देने के लिए –

+0

+1। –

4

यहाँ पर एक प्रकार है (आर जर्नल Vol 4/2।) समाधान जो बहुभुज को अलग/अलग करके काम करता है। डेटा सेट wrld_simpl किसी अन्य स्पेटियल पॉलीगन्स * ऑब्जेक्ट द्वारा प्रतिस्थापित किया जा सकता है।

library(maptools) 
library(raster) 
library(rgeos) 

data(wrld_simpl) 

x <- list(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+")) 

## use raster to quickly generate the polymask 
## (but also use image2Grid to handle corner coordinates) 
r <- raster(image2Grid(x)) 
p <- as(extent(r), "SpatialPolygons") 

wmap <- gIntersection(wrld_simpl, p) 
oceanmap <- gDifference(p, wmap) 

image(r) 
plot(oceanmap, add = TRUE, col = "light blue") 

oceanmap by poly intersection/differencing

(कुछ वैकल्पिक हल यह करने के लिए नक्शे डेटा परिवर्तित कठिन हो सकता है, मैं इसे maptools::map2SpatialPolygons के साथ आसानी से नहीं कर सका, यह ले जाएगा)

3

मैं अपने प्रश्न का शीर्षक (जवाब कर सकते हैं "मैं अमेरिका के मानचित्र में सागर नीले रंग को कैसे रंग सकता हूं?"), हालांकि आपके प्रश्न के शरीर में वर्णित विशिष्ट स्थिति नहीं है ("मैं पर यूएस का नक्शा खींचना चाहता हूं , लेकिन फिर महासागरों में भरें ")।

हालांकि, मुझे यह जवाब शामिल है कि यह आपके प्रश्न में आने वाले अन्य लोगों के लिए उपयोगी है।

map(database='state', bg='light blue') 

bg विकल्प नक्शे की पृष्ठभूमि है, जो महासागरों में शामिल करने के लिए हल्के नीले रंग की एक रंग देता है।

संबंधित मुद्दे