【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")
とロケールを設定することで解決しました。
うん、ドイツの時によりきれいに表現できて満足です。