बहुभुज को फाड़ने के कारण दुर्गंध


10

मुझे ggplot2 का उपयोग करके अपने स्थानिक डेटा को प्लॉट करने में कुछ परेशानी हो रही है। जब spplot का उपयोग करके प्लॉट किया जाता है, तो नक्शा ठीक दिखता है, इसलिए मैं यह मान रहा हूं कि फाड़ता हुआ दृढ़ अवस्था में होता है।

कोड निम्नानुसार है:

#install the packages
library(rgdal)
library(mapproj)
library(raster)
library(rgeos)
library(ggplot2)
library(plyr)

if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()

setwd("C:/Users/My Documents")

#read in laa to regional mapping
#must aggregate to higher level regions as data is provided at this higher level
laa_region_mapping <- read.csv("laa_region.csv", header = TRUE)

#read in LAA polygons
laa_polygons <- readOGR("ctyua_ew_generalised_WGS84.json", "OGRGeoJSON")

#merge by laa to add region column to polygon data
laa_polygons_with_region_data <- merge(laa_polygons, laa_region_mapping,
                                by.x = "CTYUA13NM", by.y = "LAA",
                                all.x = TRUE, all.y = TRUE)

# aggregate laa polygons by the 21 regions (aggregate by regoin_code)
region_polygons <- raster::aggregate(laa_polygons_with_region_data, "region_code")

कुल ने काम किया है, जैसा कि spplot द्वारा देखा जा सकता है (ध्यान दें: मैंने पाया कि इस SE पोस्ट से क्षेत्रों को कैसे एकत्रित किया जाए: R में कोड द्वारा स्थानिक बहुभुज सम्मिलित हों )

#plot the resulting polygons using spplot
spplot(region_polygons)

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

लेकिन जब मैं स्थानिक डेटा को मजबूत करता हूं ताकि मैं ggplot का उपयोग कर सकूं, किनारों के आसपास फाड़ है।

#fortify and merge to create the data frame ggplot will show on the map
region_polygons@data$id <- rownames(region_polygons@data)
region_polygons.points <- fortify(region_polygons, region = "id")

# plot the fortified df using ggplot
ggplot(data = region_polygons.points, aes(x= long, y = lat, group = id, fill=id)) + geom_polygon()

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

मैं इस आंसू को कैसे रोक सकता हूं?

मैंने एसई पर समान प्रतिक्रियाओं को देखा है, लेकिन प्रतिक्रियाएं बताती हैं कि आर (ggplot और geom_polygon? ) का उपयोग करके मर्ज (कलाकृतियों) के 'फाड़' का कारण क्या है? मुझे लगता है कि मेरा फाड़ गढ़वाली अवस्था में होता है क्योंकि किलेबंदी ठीक दिखने से पहले होती है।


आप अपने डेटासेट पहले सामान्यीकरण करने के लिए (अपने कार्यक्रम है कि कई कोने को संभाल नहीं कर सकते हैं) इस मुद्दे को खत्म करने की जरूरत है
Mapperz

जवाबों:


15

आपको मैपिंग group=groupमें उपयोग करना चाहिए aes। यहाँ आपकी समस्या का एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है:

library("ggplot2")
library("raster")

x <- getData('GADM', country='GBR', level=2)
y <- fortify(x, region="NAME_2")
head(y)
#     long   lat order  hole piece      group       id
# 1 -2.049 57.23     1 FALSE     1 Aberdeen.1 Aberdeen
# 2 -2.049 57.23     2 FALSE     1 Aberdeen.1 Aberdeen
# 3 -2.049 57.23     3 FALSE     1 Aberdeen.1 Aberdeen
# 4 -2.050 57.23     4 FALSE     1 Aberdeen.1 Aberdeen
# 5 -2.050 57.23     5 FALSE     1 Aberdeen.1 Aberdeen
# 6 -2.050 57.23     6 FALSE     1 Aberdeen.1 Aberdeen


# wrong group aesthetic
ggplot(data=y, aes(y=lat, x=long, group=id, fill=id)) +
  geom_polygon() + 
  guides(fill=FALSE)

गलत ऐस-समूह

# fixed plot
ggplot(data=y, aes(y=lat, x=long, group=group, fill=id)) +
  geom_polygon() +
  guides(fill=FALSE)

निश्चित प्लॉट


1
शुक्रिया @rcs यह बिल्कुल समस्या है। यह अब तय हो गया है।
वार्षिक 28

4
संक्षिप्त विवरण: एक गढ़वाले स्थानिक बहुभुज डेटा सेट में, idसुविधा आईडी है, और groupव्यक्तिगत रिंग (द्वीप, छेद आदि) की आईडी है। इसलिए यदि आप idसमूह के रूप में आकर्षित होते हैं तो यह आपकी विशेषता के सभी बिट्स को एक अंगूठी के रूप में खींचता है, इसलिए यह "फाड़" होता है क्योंकि यह द्वीपों के साथ कूदता है।
स्पेसमैन

पोस्टरिटी के लिए, मैं एक और सुझाव यहां छोड़ दूंगा क्योंकि मैं इसे अक्सर देखता हूं ... बहुभुज फाड़ने का एक सामान्य कारण है बिना डेटा के। यदि सही groupसौंदर्य को निर्दिष्ट करने से इसका समाधान नहीं होता है (जो इस विशिष्ट उदाहरण पर लागू नहीं होता है), तो y <- y[order(y$order),]शायद यह कोशिश करेगा। orderस्तंभ द्वारा बनाई गई है fortifyयह बहुत ही कारण के लिए कार्य करते हैं।
DMP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.