【R】オーストリアの地域別牛乳生産量
こちらのページでは、ドイツの地域別の牛乳生産量(2018年)をコロプレス図にて表現しました。
今回は、お隣のオーストリアの地域別の牛乳生産量(2018年)を同じくコロプレス図にて描いてみます。
データは、”Eurostat“というサイトから、EU統計を取得してローカルに保存しておきます。
今回も、国・地域別の牛乳の生産量(Production of cow’s milk on farms by NUTS 2 regions (tgs00046))を取得し、そのうちオーストリアの生産量のみを抽出、地方別にコロプレス図を描いてみます。
こちらから
Data >
MAIN TABLES >
Regional statistics(t_reg) >
Regional agriculture statistics(t_reg_agr) >
Productionof cow’s milk on farms by NUTS2 region
のデータをTSV形式で保存します(tgs00046.tsv)。
EUの国々の地方は、NUTSという体系で分類されています。各国のNUTSの詳しい分類は、こちらのページにあります。
今回は、NUTS2で分類、表示しますが、このコードと地域名の一覧をあらかじめCSVファイルにまとめておきました。
http://www.dinov.tokyo/Data/World/NUTS2_Code_AT.csv
また、地図を描くシェープファイルは、DIVA-GISの”Spatial Data Download”から、Administrative areaのデータをとってきます。今回は、Austriaの地図(NUTS.2) AUT_adm1.shp です。カレントディレクトリに作った”AUT_adm”ディレクトリに入れておきます。
下記のコードで、2018年のオーストリアの地方の牛乳生産量を取得、表示できます。
library(tidyverse)
require(data.table)
library(ggplot2)
library(ggrepel)
library(sf)
library(kableExtra)
Sys.setlocale("LC_CTYPE", "german")
nuts <- read.csv("http://www.dinov.tokyo/Data/World/NUTS2_Code_AT.csv", header = TRUE, encoding="UTF-8")
milk_data<-as.data.frame(fread("tgs00046.tsv")) %>%
separate(col = V1, into=c("x1", "x2", "Code"), sep=",", remove=TRUE, convert=FALSE) %>%
left_join(., nuts, by="Code", copy=FALSE) %>%
drop_na() %>%
rename("NAME_1" = NUTS_2_org)
map <- read_sf("AUT_adm/AUT_adm1.shp")
dat <- map %>%
left_join(., milk_data, by="NAME_1", copy=FALSE) %>%
mutate("Milk_t"=as.numeric(V12)) %>%
arrange(desc(Milk_t)) %>%
mutate( # 重心計算と座標値の抽出
centroid = st_centroid(geometry),
x = st_coordinates(centroid)[, 1],
y = st_coordinates(centroid)[, 2]
)
dat %>%
ggplot() +
geom_sf(aes(fill = Milk_t)) +
coord_sf(datum = NA) +
scale_fill_viridis_c(alpha = 0.6) +
theme_void()+
geom_text_repel(aes(x = x, y = y, label = NAME_1), col="black", size = 3)
table_df<-data.frame(Name=dat$NAME_1, Milk_t=dat$Milk_t)
library(clipr)
table_df %>%
kable(align = "c", row.names=FALSE) %>%
kable_styling(full_width = F) %>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1, valign = "middle") %>%
write_clip

| Name | Milk_t |
|---|---|
| Oberöterreich | 1205.59 |
| Niederöterreich | 749.95 |
| Steiermark | 587.15 |
| Tirol | 432.71 |
| Salzburg | 389.18 |
| Känten | 240.40 |
| Vorarlberg | 187.34 |
| Burgenland | 28.88 |
| Wien | 0.00 |
ウムラウト(umlaut)の入ったCSVファイルを読み込むことに苦労しました。。。結果的には、
Sys.setlocale("LC_CTYPE", "german")
とロケールを設定することで解決しました。
うん、ドイツの時によりきれいに表現できて満足です。