本文書は、2019年の日本の人工呼吸器等本体1の輸入額のデータを用いる。
データは、『財務省貿易統計』から得た。人工呼吸器等本体は第90類のHSコード’901920000’に該当する。『財務省貿易統計』の「普通貿易統計>品別国別表>輸入>2019年12月」のページからcsvファイル(ik-100h2019i018.csv)をダウンロードして、各国の重心の緯度経度を手作業で追加して本文書で用いるcsvファイル(trade.csv)を作成した。
日本は、金額ベースでは、アメリカ合衆国(179.3億円、シェア36%)、オーストラリア (93.2億円、シェア19%)、中華人民共和国 (55.4億円、シェア11%)、 ニュージーランド(25.1億円、シェア5%)、ドイツ(19.1億円、シェア4%)の5カ国から最も多く人工呼吸器等本体を輸入していた。
library(readr)
trade <- read_csv("trade.csv")
head(trade)
## # A tibble: 5 × 7
## origins destinations import longitude.x latitude.x longitude.y latitude.y
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 USA Japan 17.9 -113. 45.7 138. 37.5
## 2 Australia Japan 9.32 134. -25.7 138. 37.5
## 3 China Japan 5.54 104. 36.6 138. 37.5
## 4 New Zealand Japan 2.51 171. -41.8 138. 37.5
## 5 Germany Japan 1.91 10.4 51.1 138. 37.5
オンラインでデータ読み込む場合は、以下のコード。
trade <- read_csv("https://ayumu-tanaka.github.io/teaching/trade.csv")
# 世界地図
library(rworldmap)
worldMap <- getMap()
plot(worldMap)
- 以下のコードでパッケージsf
をインストールする。インストール途中に、Consoleで「Do
you want to proceed?
[Y/n]」と聞かれたら、Consoleに「y」をキーボードで入力する。
install.packages("sf")
fortify()
関数ggplot2
のfortify()
関数は、空間オブジェクトを、ggplot2で描画できるようにデータに変換する関数である。以下のページに簡単な解説がある。fortify()
関数は、変数として、緯度経度(long
,
lat
)のほかに、group
として国名を生成する。# ggplot2で地図を描画したり、データ処理を行うため。
library(tidyverse)
#library(data.table)
#library(sf)
mapworld_df <- fortify(worldMap)
head(mapworld_df)
## long lat order hole piece id group
## 1 61.21082 35.65007 1 FALSE 1 Afghanistan Afghanistan.1
## 2 62.23065 35.27066 2 FALSE 1 Afghanistan Afghanistan.1
## 3 62.98466 35.40404 3 FALSE 1 Afghanistan Afghanistan.1
## 4 63.19354 35.85717 4 FALSE 1 Afghanistan Afghanistan.1
## 5 63.98290 36.00796 5 FALSE 1 Afghanistan Afghanistan.1
## 6 64.54648 36.31207 6 FALSE 1 Afghanistan Afghanistan.1
scale_colour_distiller
で使える色:Blues, BuGn, BuPu,
GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu,
Reds, YlGn, YlGnBu, YlOrBr, YlOrRd
direction = 1
で色が濃いいほど、貿易額が増えるように設定。
貿易フローの形を直線にしたい場合は、geom_curve()
の代わりにgeom_segment()
を使う。
南極などを除くために、coord_sf(xlim = c(-150, 150), ylim = c(80, -60), expand = TRUE)
と設定。
color = import
で、貿易額でフローの曲線の色を変えている。
linewidth = import/10
で、貿易額でフローの曲線の幅を変えている。
geom_curve
でshow.legend = FALSE
とすると、凡例を非表示にする。
# 地図作成
ggplot() +
geom_polygon(data = mapworld_df,
aes(long, lat, group = group),
fill = "white", colour = "grey50") +
geom_curve(data = trade,
aes(x = longitude.x, y = latitude.x,
xend = longitude.y, yend = latitude.y,
color = import, linewidth = import/10),
#show.legend = FALSE,
arrow = arrow(length = unit(0.01, "npc"))) +
scale_colour_distiller(palette = "Blues", direction = 1,
name="輸入額", guide = "colorbar") +
scale_linewidth(name = "輸入額", guide = "legend") +
coord_sf(xlim = c(-150, 150), ylim = c(80, -60), expand = TRUE)
# 保存
ggsave("trade_flow_ggplot2.png", width = 8, height = 4, dpi = "print")
なお、『財務省貿易統計』では1000円単位で貿易額が計上されている。2
例えば、アメリカからの輸入額は「17927956」とcsvファイルに記載されてある。この記載額を1000倍することで、1円単位に直せる。億円単位に直すには、100000で割れば良い。
# 1円単位に変換
17927956*1000
## [1] 17927956000
# 億円単位に変換(1)
17927956*(1000/100000000)
## [1] 179.2796
# 億円単位に変換(2)
17927956/100000
## [1] 179.2796
オゾン吸入器、酸素吸入器、エアゾール治療器、人工呼吸器その他の呼吸治療用機器↩︎