分類: R

R 的 ggmap 套件:繪製地圖與資料分佈圖,空間資料視覺化

將資料畫在地圖上

有了地圖之後,接著就是要將自己的資料畫在地圖上,我們以台灣的紫外線監測資料為例,示範如何將具有經緯度的資料畫在地圖上。

首先從政府資料開放平臺上下載紫外線即時監測資料的 csv 檔,接著將資料讀進 R 中。(這裡我用的資料是 2015/11/16 15:22:15 的資料

uv <- read.csv("UV_20151116152215.csv")

這裡原始的經緯度資料是以度分秒表示,在使用前要轉換為度數表示。

lon.deg <- sapply((strsplit(as.character(uv$WGS84Lon), ",")), as.numeric)
uv$lon <- lon.deg[1, ] + lon.deg[2, ]/60 + lon.deg[3, ]/3600
lat.deg <- sapply((strsplit(as.character(uv$WGS84Lat), ",")), as.numeric)
uv$lat <- lat.deg[1, ] + lat.deg[2, ]/60 + lat.deg[3, ]/3600

接著使用 ggplot 的語法,把資料加入地圖中:

library(ggmap)
map <- get_map(location = 'Taiwan', zoom = 7)
ggmap(map) + geom_point(aes(x = lon, y = lat, size = UVI), data = uv)

ggmap 負責畫出基本的地圖,然後再使用 geom_point 加上資料點,除了指定經緯度之外,我們還使用紫外線的強度(UVI)來指定圓圈的大小。這是畫出來的圖:

依照資料發佈單位(PublishAgency)分開畫圖:

ggmap(map) +
  geom_point(aes(x = lon, y = lat, size = UVI), data = uv) +
  facet_grid( ~ PublishAgency)

這是畫出來的圖:

把地圖的顏色調淡一點,讓資料點更清楚:

ggmap(map, darken = c(0.5, "white")) +
  geom_point(aes(x = lon, y = lat, size = UVI), data = uv)

這是畫出來的圖:

Page: 1 2 3

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

2 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

2 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

2 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

2 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

2 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

2 年 ago