4

私はrworldmapWorldBank Data のパッケージを使用しており、楽しんでいます。各州に関連するデータを使用して、イランのマップをプロットしたいと考えています。それを行うための手順は何ですか?R米国のような一部の国ではそのような地図をプロットできますが、すべての国ではできません。

4

2 に答える 2

9

GADM 境界を取得するためrworldmapに使用する @jazzurro からの素晴らしい提案と組み合わせることができます。raster

あなたの主な困難は、データと地図の間で州名を一致させることかもしれません。

以下の例では、変更可能なデフォルトを使用し、州ごとに異なる色を指定しています。

library(raster)
library(rworldmap)
## 1 Get map of provinces (level 1 admin regions)
iranLevel1<- raster::getData("GADM", country = "Iran", level = 1)

## 2 join your [data] onto the map by specifying the join column in each
## this will report on any mis-matches between province names
#iranLevel1 <- rworldmap::joinData2Map([data],nameMap="iranLevel1",nameJoinIDMap="NAME_1",nameJoinColumnData=[insert])

## 3 plot map (change NAME_1 to the data you want to plot)
rworldmap::mapPolys(iranLevel1, nameColumnToPlot="NAME_1", addLegend=FALSE)

## 4 add text labels for provinces
text(iranLevel1, label="NAME_1", cex=0.7)

rworldmap とラスターを使用したイランの州の地図

joinData2Map(),は ,mapPolys()のより一般的な等価物であるjoinCountryData2Map()ことに注意してくださいmapCountryData()

これを行う別の方法は、choroplethrパッケージを使用することです。

于 2015-02-16T12:08:22.620 に答える
9

パッケージを使用して GADM データを直接インポートできrasterます。次に、ggplot2 を使用してマップを描画できます。データをダウンロードするとき、さまざまなレベルを指定できます。これに応じて、さまざまな境界が表示されます。

library(raster)
library(ggplot2)

### Get data
iran<- getData("GADM", country = "Iran", level = 2)

### SPDF to DF
map <- fortify(iran)

### Draw a map
ggplot() +
geom_map(data = map, map = map, aes(x = long, y = lat, map_id = id, group = group))

ここに画像の説明を入力

編集

Andy's answer を見て、 に州名を追加する方法を示したいと思いますggplot2。これは @hrbrmstr から学んだことです。rworldmapパッケージを使用すると、より少なく入力できます。このggplot2パッケージは、非常に優れたグラフィックも提供します。

library(raster)
library(rgdal)
library(rgeos)
library(ggplot2)
library(dplyr)

### Get data
iran<- getData("GADM", country = "Iran", level = 1)

### SPDF to DF
map <- fortify(iran)

map$id <- as.integer(map$id)

dat <- data.frame(id = 1:(length(iran@data$NAME_1)), state = iran@data$NAME_1)
map_df <- inner_join(map, dat, by = "id")

# Find a center point for each province
centers <- data.frame(gCentroid(iran, byid = TRUE))
centers$state <- dat$state


### This is hrbrmstr's own function
theme_map <- function (base_size = 12, base_family = "") {
theme_gray(base_size = base_size, base_family = base_family) %+replace% 
theme(
axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.ticks.length=unit(0.3, "lines"),
axis.ticks.margin=unit(0.5, "lines"),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.background=element_rect(fill="white", colour=NA),
legend.key=element_rect(colour="white"),
legend.key.size=unit(1.5, "lines"),
legend.position="right",
legend.text=element_text(size=rel(1.2)),
legend.title=element_text(size=rel(1.4), face="bold", hjust=0),
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.margin=unit(0, "lines"),
plot.background=element_blank(),
plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
plot.title=element_text(size=rel(1.8), face="bold", hjust=0.5),
strip.background=element_rect(fill="grey90", colour="grey50"),
strip.text.x=element_text(size=rel(0.8)),
strip.text.y=element_text(size=rel(0.8), angle=-90) 
)   
}

ggplot() +
geom_map(data = map_df, map = map_df,
         aes(map_id = id, x = long, y = lat, group = group),
         color = "#ffffff", fill = "#bbbbbb", size = 0.25) +
geom_text(data = centers, aes(label = state, x = x, y = y), size = 3) +
coord_map() +
labs(x = "", y = "", title = "Iran Province") +
theme_map()

ここに画像の説明を入力

于 2015-02-16T07:16:22.180 に答える