2013-08-19 19 views
7

में एक बड़े बहुभुज मानचित्र के साजिश छोटे क्षेत्र में मेरे पास एक आकारफाइल है जिसे मैंने geom_polygon का उपयोग करके ggplot2 में मजबूत और प्लॉट किया है। मैं इस मानचित्र के केवल एक छोटे से क्षेत्र को कैसे प्लॉट कर सकता हूं?ggplot2

मेरा पूरा नक्शा ठीक दिखता है, लेकिन मेरा छोटा क्षेत्र खराब हो गया है।

यहाँ एक काम कर उदाहरण है: यह छोटा सा शेपफ़ाइल से प्राप्त किया जा सकता है:

http://www.mappinghacks.com/data/TM_WORLD_BORDERS_SIMPL-0.2.zip

#read data 
spf<-readOGR(getwd(),"TM_WORLD_BORDERS_SIMPL-0.2") 
[email protected]$id<-rownames([email protected]) 

#fortify 
spf1<-fortify(spf,region="id") 

#full plot 
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90") 

fullplot

#subset plot #this is messy since polygons are broken 
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90")+ 
scale_x_continuous(limits = c(-2, 2))+ 
scale_y_continuous(limits = c(50, 51)) 

enter image description here

धन्यवाद।

+1

चलो। क्या पैकेज का उपयोग किया जा रहा है। कृप्या? –

+0

ओह क्षमा करें। पुस्तकालयों की घोषणा करना भूल गए। 'आवश्यकता (rgdal)' 'आवश्यकता (ggplot2)' – rmf

उत्तर

13

limitsscale_x_... और scale_y... में तर्क पैमाने की सीमा निर्धारित करता है। इन सीमाओं के बाहर कोई भी मूल्य तैयार नहीं किया गया है (अंतर्निहित डेटा गिरा दिया गया है)। इसमें तत्व शामिल हैं (जैसे बहुभुज) जो केवल इन सीमाओं के बाहर आंशिक रूप से हो सकते हैं।

आप निर्देशांक पर सीमा निर्धारित करके में ज़ूम साजिश चाहते हैं, तो xlim और ylim तर्क एक coord_.... कार्य करने के लिए, समन्वय प्रणाली पर उपयोग ?coord_cartesian

स्थापना सीमा से ज़ूम हो जाएगा साजिश (जैसे आप इसे एक आवर्धक ग्लास के साथ देख रहे हैं), और अंतर्निहित डेटा को बदल नहीं पाएंगे जैसे कि पैमाने पर सीमा निर्धारित करना।

आपके मामले में आप एक map है, और आप coord_map है, जो एक मानचित्र प्रक्षेपण का उपयोग कर अपने डेटा परियोजना जाएगा उपयोग कर सकते हैं।

जैसे

ggplot(spf1, aes(x=long,y=lat,group=group)) + 
    geom_polygon(colour = 'grey90') + 
    coord_map(xlim = c(-2, 2),ylim = c(50, 51)) 

enter image description here

+2

एक अतिरिक्त टिप्पणी यह ​​है कि, 'coord_map' को अक्षांश-अक्षांश के रूप में निर्देशांक की आवश्यकता होती है या इसे निर्दिष्ट करने के लिए एक विशिष्ट प्रक्षेपण की आवश्यकता होती है। यूटीएम निर्देशांक के लिए, 'coord_cartesian' का उपयोग करना बेहतर है। – rmf

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