[英]coloring polygons in ggplot2 (R)
我對R非常陌生。我設法使用下面的代碼生成了下面的地圖。
我想為地圖上最右邊的多邊形(在代碼中表示為“ WestTerr”)塗上與其他三個多邊形(在代碼中表示為“ Serena”)不同的顏色。 我嘗試了各種事情,這些都給我帶來了錯誤。 有人知道如何幫助我嗎?
library(ggmap)
library(RgoogleMaps)
library(foreign)
library(raster)
library(sp)
library(rgeos)
library(spatstat)
library(maptools)
library(rgdal)
library(ggplot2)
CenterOfMap <- geocode("-1.4, 35.08")
MasaiMara <- get_map(c(lon=CenterOfMap$lon, lat=CenterOfMap$lat), zoom = 10,
maptype = "roadmap", source = "google")
MasaiMaraMap <- ggmap(MasaiMara)
setwd("Territories_Jenna/")
SouthTerr <- readOGR(".","SouthMCP")
SouthTerr <- spTransform(SouthTerr, CRS("+proj=longlat +datum=WGS84"))
fortify(SouthTerr)
HZTerr <- readOGR(".","HZMCP")
HZTerr <- spTransform(HZTerr, CRS("+proj=longlat +datum=WGS84"))
fortify(HZTerr)
SandHZ <- gUnion(SouthTerr, HZTerr)
SandHZ <- spTransform(SandHZ, CRS("proj=longlat +datum=WGS84"))
fortify(SandHZ)
MapwithSandHZ <- MasaiMaraMap +
geom_polygon(aes(x=long, y=lat, group=group),
fill = "black", size=.7, color="black",
data=SandHZ, alpha=0)
NorthTerr <- readOGR(".","NorthMCP")
NorthTerr <- spTransform(NorthTerr, CRS("+proj=longlat +datum=WGS84"))
fortify(NorthTerr)
MapwithNorth <- MasaiMaraMap +
geom_polygon(aes(x=long, y=lat, group=group),
fill = "black", size=.7, color="black",
data=NorthTerr, alpha=0)
Serena <- gUnion(SandHZ, NorthTerr)
Serena <- spTransform(Serena, CRS("proj=longlat +datum=WGS84"))
fortify(Serena)
MapwithSerena <- MasaiMaraMap +
geom_polygon(aes(x=long, y=lat, group=group),
fill = "black", size=.7, color="black",
data=Serena, alpha=0)
WestTerr <- readOGR(".","WestMCP")
WestTerr <- spTransform(WestTerr, CRS("+proj=longlat +datum=WGS84"))
fortify(WestTerr)
MapwithWest <- MasaiMaraMap +
geom_polygon(aes(x=long, y=lat, group=group),
fill = "red", size=.7, color="red",
data=WestTerr, alpha=0)
AllTerrs <- gUnion(Serena, WestTerr)
AllTerrs <- spTransform(AllTerrs, CRS("proj=longlat +datum=WGS84"))
fortify(AllTerrs)
MapwithAllTerrs <- MasaiMaraMap +
geom_polygon(aes(x=long, y=lat, group=group),
fill = "red", size=.7, color="red",
data=AllTerrs, alpha=0)
MapwithAllTerrs
我無權訪問您的數據,因此我創建了一個示例數據。 看到代碼,您在四個調用中創建了四個多邊形。 我認為您想合並所有數據並繪制多邊形。 使用fortify()
,會看到一列id。 如果您合並數據,則要確保每個多邊形都有唯一的ID。 我認為,一旦有了數據,就可以直接進行工作。 您可以使用scale_fill_manual()
手動更改多邊形的顏色
library(ggmap)
CenterOfMap <- geocode("-1.4, 35.08")
MasaiMara <- get_map(c(lon=CenterOfMap$lon, lat=CenterOfMap$lat), zoom = 10,
maptype = "roadmap", source = "google")
ggmap(MasaiMara) +
geom_polygon(data = mydf, aes(x = long, y = lat, group = id, fill = factor(id))) +
scale_fill_manual(values = c("red", "red", "blue"))
mydf <-structure(list(id = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 3L), long = c(34.97, 34.95, 34.95, 34.97, 34.97,
35, 34.82, 34.83, 35, 35, 35.2, 35.1, 35.1, 35.2, 35.2), lat = c(-1.38,
-1.38, -1.4, -1.4, -1.38, -1.6, -1.6, -1.7, -1.7, -1.6, -1.43,
-1.43, -1.5, -1.5, -1.43)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -15L), .Names = c("id", "long", "lat"), spec = structure(list(
cols = structure(list(id = structure(list(), class = c("collector_integer",
"collector")), long = structure(list(), class = c("collector_double",
"collector")), lat = structure(list(), class = c("collector_double",
"collector"))), .Names = c("id", "long", "lat")), default = structure(list(), class = c("collector_guess",
"collector"))), .Names = c("cols", "default"), class = "col_spec"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.