OECDの主要統計から住宅価格に関連するデータを抽出し,実質住宅価格指数(real house price indices)をNatural Earthの世界地図に可視化.
バブルマップをアニメーション化.
install.packages("OECD")
ではななく,下記の方がよいかも(作成日現在).ライブラリ:sf
,tidyverse
,OECD
,rnaturalearth
,gganimate
get_datasets()
:OECDに掲載されているすべてのデータにアクセス.search_dataset()
を用いて必要なデータを検索.ここでは,キーワードとして「住宅価格(house price
)」に関わるデータを検索.↑
3つの指標があり,それぞれの説明が記されている.HOUSE_PRICES
を利用.hp
と名付ける.get_data_structure()
:指定されたデータ(hp
)のリストを返す.各リストの観測数,変数の数を確認できる.hpstr
と名付ける.str()
:hpstr
のデータ構造を表示.そのうち,最初の階層のみ(max.level=1
)表示.## List of 9
## $ VAR_DESC :'data.frame': 9 obs. of 2 variables:
## $ COU :'data.frame': 52 obs. of 2 variables:
## $ IND :'data.frame': 7 obs. of 2 variables:
## $ TIME :'data.frame': 476 obs. of 2 variables:
## $ OBS_STATUS :'data.frame': 16 obs. of 2 variables:
## $ UNIT :'data.frame': 323 obs. of 2 variables:
## $ POWERCODE :'data.frame': 32 obs. of 2 variables:
## $ REFERENCEPERIOD:'data.frame': 112 obs. of 2 variables:
## $ TIME_FORMAT :'data.frame': 5 obs. of 2 variables:
VAR_DESC
の中身を表示.
IND
が住宅価格指標.IND
の中身を表示.
RHP
(実質住宅価格指数)を利用.COU
の中身を表示.
JPN
),ドイツ(DEU
),アメリカ(USA
),イギリス(GBR
),ニュージーランド(NZL
)を利用.list()
を用いて,可視化する変数や要素をフィルターの条件としてリスト化.filter_list
と名付ける.c()
でベクトルとして扱う.↑
表のid
から3文字の国名コードを加える.get_dataset()
:データを指定し,フィルターをかけて,データを抽出.df
と名付ける.↑
Time
列に四半期データが含まれている.このままだと年次データと識別できない.
TIME_FORMAT
の表示(↓
).
P1Y
が年次データ,P3M
が四半期データとされているが,↑
のTIME_FORMAT
はすべてP1Y
と表示...(なぜ?)df
から利用する列を選抜(select()
)し,Time
列で「-」表記のある要素(例えば,1970-Q1
)を取り除く(fliter()
の!
で取り除くことが可能).
8. 実質住宅価格の値(ObsValue
)が文字なので数値に変更.
geom_line()
)で可視化.
group=COU
),色(color
)と折れ線の形状(linetype
)で識別.#図を見やすくするための工夫
my_breaks <-
c(1960, 1965, 1970, 1975, 1980, 1985,
1990,1995, 2000, 2005, 2010, 2015, 2020)
my_color <-
c("#0B0405FF", "#38AAACFF", "#3B2F5EFF",
"#366A9FFF", "#A0DFB9FF")
my_line <-
c("dotted", "dashed", "solid",
"dotdash", "longdash")
#可視化
ggplot()+
geom_line(data=df,
aes(x=Time, y=ObsValue,
group=COU, color=COU,
linetype=COU),
linewidth=0.7)+
scale_color_manual(values=my_color)+
scale_linetype_manual(values=my_line)+
geom_vline(xintercept="2015",
linewidth=0.5)+
scale_x_discrete(breaks=my_breaks)+
labs(color="国", linetype="国",
x="年", y="実質住宅価格指数, 2015=100",
caption="出典: OECD")+
ggtitle("実質住宅価格指数(1960年~2022年)")+
theme_bw()
ne_countries()
で読込.scale
)はmedium
を指示.World_map
と名付ける.World_map
のiso_a3
が3文字の国名コード.
left_join()
:データ結合(横方向).コロプレスマップで時系列の実質住宅価格指数の変化を捉えるアニメーション作成.
choropleth_map <-
ggplot()+
geom_sf(data=World_map, fill="gray",
alpha=0.4, color="white",
linewidth=0.001)+
geom_sf(data=hp_map, aes(fill=ObsValue),
color="white", linewidth=0.001)+
scale_fill_viridis_c(option="G")+
labs(fill="2015=100",
subtitle="年:{current_frame}",
caption="出典:Natural Earth, OECD")+
ggtitle("実質住宅価格指数")+
coord_sf(crs=st_crs("ESRI:54030"))+
theme_bw()+
theme(legend.position="bottom")
transition_manual()
:作成された地図(フレーム)をTime
で連続して変化させるように指示.anime_
と名付ける.
animate()
:作成したanimeをアニメーション化.name
をデータ結合上capital_name
に変更.hp_map
に首都の位置情報を追加するために,データ結合.#首都の位置情報
capital <-
read.csv("capital_cities_2022_0.csv",
sep=",", header=TRUE)
#データ結合
hp_map <-
left_join(hp_map, capital,
by=c("iso_a3"="adm0_a3"))
#データの一部中身,位置情報
hp_map %>%
select(iso_a3, Time, capital_name,
x, y) %>%
filter(Time=="2022") ->
hp_map_XY
hp_map_XY %>%
head()
#6年分抽出
hp_map %>%
filter(Time=="1975" | Time=="1985" |
Time=="1995" | Time=="2005" |
Time=="2015" | Time=="2022") ->
hp_map2
#可視化
ggplot()+
geom_sf(data=World_map, fill="gray")+
geom_point(data=hp_map2, aes(x=x, y=y,
color=ObsValue,
size=ObsValue), alpha=0.8)+
scale_color_viridis_c(option="G",
guide="legend")+
scale_size_area(max_size=10)+
geom_sf(data=World_map, fill="NA")+
labs(color="実質住宅価格指数",
size="実質住宅価格指数",
x="", y="")+
facet_wrap(~Time, ncol=2)+
ggtitle("実質住宅価格指数(1975年~2022年)")+
theme_void()+
theme(legend.position="bottom")
#bubble_mapと名付けて地図を格納
bubble_map <-
ggplot()+
geom_sf(data=World_map, fill="gray")+
geom_point(data=hp_map,
aes(x=x, y=y,
color=ObsValue,
size=ObsValue),
alpha=0.8)+
scale_color_viridis_c(option="G",
guide="legend")+
scale_size_area(max_size=16)+
geom_sf(data=World_map, fill="NA")+
labs(color="実質住宅価格指数",
size="実質住宅価格指数",
subtitle="年:{current_frame}",
caption="出典:Natural Earth, OECD",
x="", y="")+
ggtitle("実質住宅価格指数(2015=100)")+
theme_void()+
theme(legend.position="bottom")
Rによる地理空間データの可視化