ggplot2で作成したコロプレスマップにテキスト注釈を追加しようとしていますが、現在失敗しています。それぞれのポリゴン(地方自治体)に名前を付けたいと思っています。
先に進む前に、SOについても同様の質問があり、ここの(非常に優れた)チュートリアルで詳しく説明されていることを知っています。しかし、私はいくつかの方法を試しましたが失敗し、別の問題に遭遇した可能性があると思います。コードが失敗する理由の1つは、geom_polygon()に注釈を付けようとしているのに対し、他のメソッドではgeom_mapオブジェクトに注釈を付ける方法が詳しく説明されているためだと思います。そうは言っても、geom_polygonでこれが不可能な理由は考えられません。
以下にコードを含めました。ここから私のデータをダウンロードできます。データフレームには、強化されたシェープファイルに結合されたデータが含まれています。追加しようとしているラベルは、「LGA_NAME11」列にあります。
## LOAD PACKAGES
require(ggplot2)
require(rgdal)
require(dplyr)
## SET GGPLOT THEME
theme_clean <- function(base_size = 12) {
require(grid)
theme_grey(base_size) %+replace%
theme(
axis.title = element_blank(),
axis.text = element_blank(),
panel.background = element_blank(),
panel.grid = element_blank(),
axis.ticks.length = unit(0,"cm"),
axis.ticks.margin = unit(0,"cm"),
panel.margin = unit(0,"lines"),
plot.margin = unit(c(0, 0, 0, 0), "lines"),
complete = TRUE
)}
## SET COLOUR PALETTES
palette1 <- c("#f2f0f7", "#dadaeb", "#bcbddc", "#9e9ac8", "#756bb1", "#54278f")
## SET LABEL NAMES
lgaNamesSydney <- aggregate(cbind(long, lat) ~ LGA_NAME11, data=sydneyMapData, FUN = function(x) mean(range(x)))
lgaNamesSydney <- lgaNamesSydney %>% rename(lga = LGA_NAME11)
lgaNamesSydney$angle <- 0
## ATTEMPT TO PLOT MAP WITH LABELS
ggplot(sydneyMapData) +
aes(long, lat, group=group, fill=Factor1) +
geom_polygon() +
geom_text(data=lgaNamesSydney, aes(long, lat, label = LGA_NAME11, angle=angle, map_id =NULL), size=2.5) +
scale_fill_manual(values = palette1) +
labs(fill="Drop Bears \nper 1000 population") +
coord_map(projection = "mercator") +
theme_clean()
誰かが何か提案があれば、誰かが私が間違っているところを指摘できれば非常にありがたいです。前もって感謝します。
余談ですが、コロプレスにラベルを付けると視覚的な体験が損なわれる可能性があることは認識していますが、上司から特別にリクエストがありました。
このようなラベルを追加できます
# http://stackoverflow.com/questions/9441778/improve-centering-county-names-ggplot-maps
centroids <- setNames(do.call("rbind.data.frame", by(sydneyMapData, sydneyMapData$group, function(x) {Polygon(x[c('long', 'lat')])@labpt})), c('long', 'lat'))
centroids$label <- sydneyMapData$LGA_NAME11[match(rownames(centroids), sydneyMapData$group)]
ggplot(sydneyMapData, aes(long, lat, group=group, fill=Factor1)) +
geom_polygon(colour = "white") +
with(centroids, annotate(geom="text", x = long, y=lat, label = label, size = 2.5))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加