ggplot() +
geom_polygon(data = poland.map.gg,
aes(long, lat, group = group, fill = N_mężczyzna))
我想删除那些空白的怪异形状。
完整代码:
library(rgdal)
download.file("http://www.gis-support.pl/downloads/wojewodztwa.zip", "wojewodztwa.zip") #ściągamy plik z shapefilem
unzip("wojewodztwa.zip", exdir=".") #rozpakowujemy plik
poland.map <- readOGR(dsn=".", "województwa") #argumentami są nazwa folderu oraz nazwa pliku (nie podajemy rozszerzenia)
poland.map@data <- poland.map@data[ , c(6,16)] #weźmy tylko nazwy województw oraz ich powierzchnie
names(poland.map@data) <- c("nazwa", "powierzchnia")
#kłopoty z kodowaniem
poland.map@data$nazwa <- c("opolskie", "świętokrzyskie", "kujawsko-pomorskie", "mazowieckie", "pomorskie", "śląskie",
"warmińsko-mazurskie", "zachodniopomorskie", "dolnośląskie", "wielkopolskie", "łódzkie",
"podlaskie", "małopolskie", "lubuskie", "podkarpackie", "lubelskie")
library(ggplot2)
library(rgeos)
library(maptools)
poland.map.gg <- fortify(poland.map, region="nazwa")
km_woj <- read.table(file="clipboard", header = T)
head(poland.map.gg)
poland.map.gg <- merge(poland.map.gg, km_woj, by.x="id", by.y="Województwo",
sort=F)
ggplot()+geom_polygon(data=poland.map.gg, aes(long, lat, group=group,
fill=N_mężczyzna))
答案 0 :(得分:2)
尝试使用sf
软件包而不是rgeos
。并从dplyr
加入。
最好不要在变量名中使用波兰字母:)
完整代码:
library(tidyverse)
library(sf)
download.file("http://www.gis-support.pl/downloads/wojewodztwa.zip", "wojewodztwa.zip") #ściągamy plik z shapefilem
unzip("wojewodztwa.zip", exdir=".") #rozpakowujemy plik
# fake km_woj table:
km_woj <- tibble(Wojewodztwo = c("opolskie", "świętokrzyskie", "kujawsko-pomorskie", "mazowieckie", "pomorskie", "śląskie", "warmińsko-mazurskie", "zachodniopomorskie", "dolnośląskie", "wielkopolskie", "łódzkie", "podlaskie", "małopolskie", "lubuskie", "podkarpackie", "lubelskie"),
N_mezczyzna = rnorm(16, 100, 10))
poland.map <- read_sf("województwa.shp")
poland.map <- poland.map %>% select(nazwa = jpt_nazwa_, geometry)
#kłopoty z kodowaniem
poland.map$nazwa <- c("opolskie", "świętokrzyskie", "kujawsko-pomorskie", "mazowieckie", "pomorskie", "śląskie", "warmińsko-mazurskie", "zachodniopomorskie", "dolnośląskie", "wielkopolskie", "łódzkie", "podlaskie", "małopolskie", "lubuskie", "podkarpackie", "lubelskie")
poland.map
poland.map.gg <- left_join(poland.map, km_woj, by = c("nazwa" = "Wojewodztwo"))
poland.map.gg
ggplot() +
geom_sf(data = poland.map.gg,
aes(fill = N_mezczyzna))