2016-04-29 30 views
-1

有沒有一種方法可以使用構面來組合這三幅地圖?ggplot2中的geom_polygon - Facets用於不同的填充?

emi <- readShapePoly('prov2011_g.shp') 
names(emi) <- c('REG', 'ID', 'NOME', 'SHAPE', 'AREA', 'MIG1', 'MIG2', 'MIG3') 
emi_geom <- poly_coords(emi) 

map <- qplot(PolyCoordsY, PolyCoordsX, data = emi_geom, group = Poly_Name, geom = 'polygon', fill = MIG1) 

map1 <- qplot(PolyCoordsY, PolyCoordsX, data = emi_geom, group = Poly_Name, geom = 'polygon', fill = MIG2) 

map2 <- qplot(PolyCoordsY, PolyCoordsX, data = emi_geom, group = Poly_Name, geom = 'polygon', fill = MIG3) 

我遵循這個偉大的教程(http://www.r-bloggers.com/maps-with-ggplot2/)。 poly_coords函數把shape中的座標轉換出來。我試圖使用融化(reshape2),但我不知道如何將其應用於這種情況 - 與其他geom_ *是一件容易得多。 希望你能幫助我。

+0

我搜索的文件名。看起來你的文件包含意大利的多邊形?是對的嗎? – jazzurro

+0

@jazzurro你好,是的,它的確如此! – Gaspare

+0

你能提供一個鏈接來獲取文件嗎?我還想問你最終想達到什麼目的。你可以在你的問題中陳述嗎? – jazzurro

回答

2

發佈答案,讓沒有未來的SO搜索者認爲qplot()甚至是一個遠程的好主意。沒有接受或+1的要求。請停止從博客文章中粘貼代碼&,甚至不要試圖詆譭它。

library(rgdal) 
library(maptools) 
library(ggplot2) 
library(viridis) 

prov <- readOGR("prov2011_g.shp", "prov2011_g", stringsAsFactors=FALSE, verbose=FALSE) 

longlat <- "+init=epsg:4121 +proj=longlat +ellps=GRS80 +datum=GGRS87 +no_defs +towgs84=-199.87,74.79,246.62" 

prov <- SpatialPolygonsDataFrame(spTransform(prov, CRS(longlat)), [email protected]) 

prov_map <- fortify(prov, region="NOME_PRO") 

fac <- data.frame(area=rep([email protected]$NOME_PRO, 3), 
        measure=rep(c("A", "B", "C"), each=nrow([email protected])), 
        val=sample(100, nrow([email protected])*3, replace=TRUE)) 

gg <- ggplot() 
gg <- gg + geom_map(data=prov_map, map=prov_map, 
        aes(x=long, y=lat, map_id=id), 
        color="#2b2b2b", size=0.1, fill=NA) 
gg <- gg + geom_map(data=fac, map=prov_map, 
        aes(fill=val, group=measure, map_id=area)) 
gg <- gg + scale_fill_viridis() 
gg <- gg + facet_wrap(~measure) 
gg <- gg + coord_map() 
gg <- gg + ggthemes::theme_map() 
gg 

enter image description here

+0

感謝您的幫助,併爲我解釋問題的方式表示歉意。 – Gaspare