地価公示(ポイント)の大きさを変えることにより,地価が高い箇所を強調表現(地価が低い箇所は抑制表現).ポイントはバブル(泡)と言い換えられ,バブルを使った図はバブルチャートとよばれる.地図の場合はバブルマップとよぶ.
ライブラリ:sf
,tidyverse
ポイントデータによる地価の可視化で作成した神奈川県の地価(2022年)を再現.
シェープファイルのダウンロード
国土数値情報ダウンロードサービス > 行政区域(ポリゴン) > 神奈川県 > 令和3年
国土数値情報ダウンロードサービス > 地価公示(ポイント) > 神奈川県 > 「神奈川県」データのダウンロード > 世界測地系 令和4年
read_sf
):行政区域をKanagawa_map
,地価公示をKanagawa_lp
と名付ける.Kanagawa_map<-
read_sf('N03-20210101_14_GML/N03-21_14_210101.shp')
Kanagawa_lp<-read_sf('L01-22_14_GML/L01-22_14.shp')
データのソート
地価(L01_006
)が高いポイントの色が上にくるよう順番を変更(arrange
).
Kanagawa_lp
のまま.再現図形
地価公示ポイント(バブル)の大きさを変えるために,aes(size)
を利用する.これを活かすために,地価公示ポイント(x
軸が経度,y
軸が緯度)の変数を作成.
geometry
にすでに納められている.
select()
:列の抽出.Kanagawa_lp1
)を変更して,head()
で中身を確認.geometry |
---|
POINT (139.6507 35.20473) |
POINT (139.2251 35.41038) |
POINT (139.1146 35.25959) |
POINT (139.3062 35.46262) |
POINT (139.247 35.3452) |
POINT (139.4259 35.40653) |
st_coordinates()
:座標を取得するように指示.ここでは,括弧内の1番目の数値(経度)をx
,2番目の数値(緯度)をy
とするように指示.Kanagawa_lp
のまま.select()
を用いて必要な列の抽出.Kanagawa_lp2
)を変更して,head()
で中身を確認.#もとのデータで作業
Kanagawa_lp %>%
mutate(x=st_coordinates(geometry)[, 1],
y=st_coordinates(geometry)[, 2]) ->
Kanagawa_lp
#geometry,緯度経度の抽出,データ名変更
Kanagawa_lp2 <-
Kanagawa_lp %>%
select(geometry, x, y)
#最初の6行
Kanagawa_lp2 %>%
head()
geometry | x | y |
---|---|---|
POINT (139.6507 35.20473) | 139.6507 | 35.20473 |
POINT (139.2251 35.41038) | 139.2251 | 35.41038 |
POINT (139.1146 35.25959) | 139.1146 | 35.25959 |
POINT (139.3062 35.46262) | 139.3062 | 35.46262 |
POINT (139.247 35.3452) | 139.2470 | 35.34520 |
POINT (139.4259 35.40653) | 139.4259 | 35.40653 |
バブルマップを用いた可視化
aes(x=x, y=y)
:x
軸を↑で作成したx
の値を,y
軸を↑で作成したy
の値を使うように指示.これにより,泡(地価ポイント)の位置(緯度経度)が確定する.aes(color=, size=)
で泡(地価ポイント)の色(color
)と大きさ(size
)を指示.
aes(size=L01_006/10000)
:泡(地価ポイント)の大きさを2022年の地価(L01_006
)の高低で表現できるようにに指示.L01_006
を1万(10000
)で割る.guide="legend"
:凡例を制御.指示しない場合,color
とsize
の凡例が別々に表現される.scale_size_area(max_size=10)
で泡の大きさの最大値を指示.x=""
,y=""
を記すことで,x
軸とy
軸のラベル削除.ggplot()+
geom_sf(data=Kanagawa_map, fill="white")+
geom_point(data=Kanagawa_lp,
aes(x=x, y=y,
color=L01_006/10000,
size=L01_006/10000))+
scale_color_viridis_c(option="G",
direction=-1,
guide="legend")+
scale_size_area(max_size=10)+
geom_sf(data=Kanagawa_map, fill="NA")+
labs(color="万円/㎡", size="万円/㎡",
x="", y="")+
ggtitle("神奈川県の地価(2022年)")+
theme_bw()
完成図
凡例のデータの分類の間隔(閾値)を自分で作成し,my_breaks
と名付ける.
scale_color_distiller()
,scale_size_area()
ともにデータの分類間隔(breaks
)にmy_breaks
を適用するように指示.labs()
内に出典を表記(caption
).my_breaks<-c(100, 200, 400, 600, 1600)
ggplot()+
geom_sf(data=Kanagawa_map, fill="white")+
geom_point(data=Kanagawa_lp,
aes(x=x, y=y,
color=L01_006/10000,
size=L01_006/10000))+
scale_color_viridis_c(option="G",
direction=-1,
guide="legend",
breaks=my_breaks)+
scale_size_area(max_size=10,
breaks=my_breaks)+
geom_sf(data=Kanagawa_map, fill="NA")+
labs(color="万円/㎡", size="万円/㎡",
x="", y="",
caption="出典:国土交通省国土数値情報")+
ggtitle("神奈川県の地価(2022年)")+
theme_bw()
神奈川県の行政区域データ及び地価公示データから川崎市だけを抜き出し,2022年度(令和4年度)の地価(公示価格)を可視化.
N03_003
から「川崎市」を識別.L01_022
に川崎市の行政区域のコード(14131
~14137
)が示されている.#川崎市の行政区域の抽出
Kanagawa_map %>%
filter(N03_003=="川崎市") ->
Kawasaki_map
#川崎市の地価の抽出
Kanagawa_lp %>%
filter(L01_022>=14131 & L01_022<=14137) ->
Kawasaki_lp
theme()
:凡例の位置などの変更.#川崎市地価の可視化
#凡例の目盛幅を対数変換
my_breaks<-c(10, 50, 100, 200, 300, 400, 500)
ggplot()+
geom_sf(data=Kawasaki_map, fill="gray",
alpha=0.7,
color="gray60", linewidth=0.75)+
geom_point(data=Kawasaki_lp,
aes(x=x, y=y,
color=L01_006/10000,
size=L01_006/10000))+
scale_color_viridis_c(option="G", direction=-1,
guide="legend",
breaks=my_breaks)+
scale_size_area(max_size=5,
breaks=my_breaks)+
labs(color="万円/㎡", size="万円/㎡")+
ggtitle("川崎市地価(2022年)")+
theme_void()+
theme(legend.position.inside=c(0.85, 0.7),
legend.background=element_rect(
fill=NA, color=NA))
参考ウェブサイト
Rによる地理空間データの可視化