বহুগুণ ছিঁড়ে দেওয়ার জন্য শক্তিশালী


10

Ggplot2 ব্যবহার করে আমার স্থানিক ডেটা বানাতে কিছু সমস্যা হচ্ছে। এসপ্ল্লট ব্যবহার করে চক্রান্ত করার সময় মানচিত্রটি দুর্দান্ত দেখায় তাই আমি ধরে নিচ্ছি যে দুর্গটি শক্তিশালী পর্যায়ে ঘটে occurs

কোডটি নিম্নরূপ:

#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")

সমষ্টিটি কাজ করেছে, যেমন এসপ্লট্লট দ্বারা দেখা যায় (দ্রষ্টব্য: আমি এই এসই পোস্ট থেকে অঞ্চলগুলি কীভাবে একত্রিত করতে পারি তা খুঁজে পেয়েছি: আর কোডে স্থানিক বহুভুজগুলিতে যোগদান করুন )

#plot the resulting polygons using spplot
spplot(region_polygons)

এখানে চিত্র বর্ণনা লিখুন

তবে আমি যখন জিপিপ্লাট ব্যবহার করতে পারি তখন আমি স্থিতিশীল ডেটা মজবুত করি, তখন প্রান্তগুলি চারদিকে ছিঁড়ে যায়।

#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()

এখানে চিত্র বর্ণনা লিখুন

আমি কীভাবে এই ছেঁড়া বন্ধ করতে পারি?

আমি এসই তে অনুরূপ প্রতিক্রিয়াগুলি দেখেছি, তবে প্রতিক্রিয়াগুলি সূচিত করে যে একীভূত হওয়ার সময় ছেঁড়াটি ঘটে (আর, জিগপ্লাট এবং জিওম_পলিজোন ব্যবহার করে বহুভুজ (শিল্পকলাগুলি) 'টিয়ারিং' এর কারণ কী? )। আমি মনে করি যে আমার ছিঁড়ে ফেলা শক্তিশালী পর্যায়ে ঘটে কারণ শক্তিশালী করার আগে ভাল্লাগ্রস্থ হওয়ার আগে এসপ্ল্লট।


ইস্যুটি নির্মূল করার জন্য আপনাকে প্রথমে আপনার ডেটাসেটটি সাধারণীকরণ করতে হবে (আপনার প্রোগ্রামটি
এতগুলি অনুভূতিকে

উত্তর:


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
আপনাকে ধন্যবাদ @ আরসিএস এটি হ'ল সমস্যা। এটি এখন স্থির।
এনিভিভিক

4
সংক্ষিপ্ত বিবরণ: একটি সুরক্ষিত স্থানিক বহুভুজ ডেটা সেটে idবৈশিষ্ট্য আইডি, এবং groupপৃথক রিংগুলির আইডি (দ্বীপপুঞ্জ, গর্ত ইত্যাদি)। সুতরাং আপনি যদি idগ্রুপ হিসাবে আঁকেন তবে এটি আপনার ফিচারের সমস্ত বিটকে একটি রিং হিসাবে আঁকবে , তাই দ্বীপগুলির মধ্যে ঝাঁপ দেওয়ার সাথে সাথে "টিয়ারিং"।
স্পেসডম্যান

উত্তরসূরীদের জন্য, আমি এখানে আরও একটি পরামর্শ রেখে যাব কারণ এটি প্রায়শই আমি দেখি ... বহুভুজ ছিঁড়ে যাওয়ার একটি সাধারণ কারণ হ'ল সাজানো তথ্য। সঠিক groupনান্দনিকতা নির্দিষ্ট করে যদি এটি সমাধান না করে (যা এই নির্দিষ্ট উদাহরণের জন্য প্রযোজ্য না), চেষ্টা করে y <- y[order(y$order),]সম্ভবত। orderকলাম দ্বারা তৈরি করা হয় fortifyএই খুব কারণে ফাংশন।
dmp
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.