भी तेजी से fortify
बिना:
मुझे लगता है कि हमने पाया this blog entry से अधिक जानकारी के
के लिए नीचे दिए गए मूल पोस्ट पढ़ें ggplot::geom_polygon()
में सीधे स्थानिक बहुभुज का उपयोग कर सकते हैं
स्पीड की साजिश रचने अगर आप सिर्फ कुछ
जैसे नीचे बताया गया कल्पना करने के लिए की जरूरत से निपटने के लिए कैसे, इस तरह के अंकन पिक्सल की बड़ी संख्या के साथ बहुत धीमी गति से हो सकता है। इसलिए, आप इसे बहुभुज में परिवर्तित करने से पहले पिक्सल की संख्या को कम करने पर विचार कर सकते हैं (जो ज्यादातर मामलों में मानचित्र में जानकारी की मात्रा को कम नहीं करता है)। इसलिए, raster::aggregate
का उपयोग पिक्सेल की उचित मात्रा में कम करने के लिए किया जा सकता है।
उदाहरण दिखाता है कि 4 के क्रम से पिक्सेल की संख्या में कमी आई है (यानी 2 * 2, क्षैतिज * लंबवत)। अधिक जानकारी के लिए ?raster::aggregate
देखें।
r <- aggregate(r, fact = 2)
# afterwards continue with rasterToPolygons(r)...
मूल पोस्ट:
थोड़ी देर के बाद, मैं इस समस्या को हल करने के लिए एक रास्ता मिल गया। रास्टर को बहुभुज में परिवर्तित करना! इस विचार को मूल रूप से Marc Needham's blog post के बाद कार्यान्वित किया गया था।
फिर भी, एक दोष है: ggplot बड़ी संख्या में बहुभुजों के साथ वास्तव में धीमा हो जाता है, जिसे आप अनिवार्य रूप से सामना करेंगे। हालांकि, आप png()
(या अन्य) डिवाइस में प्लॉट करके चीजों को गति दे सकते हैं।
library(raster)
library(ggplot2)
library(ggmap)
r <- raster(....) # any raster you want to plot
rtp <- rasterToPolygons(r)
[email protected]$id <- 1:nrow([email protected]) # add id column for join
rtpFort <- fortify(rtp, data = [email protected])
rtpFortMer <- merge(rtpFort, [email protected], by.x = 'id', by.y = 'id') # join data
bm <- ggmap(get_map(location = "Shanghai", maptype = "hybrid", zoom = 10))
bm + geom_polygon(data = rtpFortMer,
aes(x = long, y = lat, group = group, fill = layer),
alpha = 0.5,
size = 0) + ## size = 0 to remove the polygon outlines
scale_fill_gradientn(colours = topo.colors(255))
यह कुछ इस तरह का परिणाम:
इस उत्तर के लिए धन्यवाद
यहाँ एक कोड उदाहरण है। हालांकि, अगर कार्टेसियन निर्देशांक का उपयोग किया जाता है, तो पहलू अनुपात बनाए रखा नहीं जाता है। इस प्रकार, यह भौगोलिक अनुप्रयोगों के लिए बहुत उपयुक्त नहीं है – loki
निम्नलिखित जोड़ने का प्रयास करें: bm <- bm + coord_fixed (xlim = c (a, b), ylim = c (c, d), अनुपात = 1.3), जहां ए, बी , सी, डी आपके द्वारा चुने गए दृश्य पैनल के विस्तार हैं। यहां कुंजी राशन को 1.3 पर सेट कर रही है। – pdbentley
वैकल्पिक रूप से आप बस बीएम <- बीएम + coord_fixed (1.3) जोड़ें। – pdbentley