這裡介紹如何使用 R 的 ggmap 套件來繪製地圖,並且把自己的資料依照經緯度畫在地圖上。
ggmap
套件是一個專門用來繪製地圖的 R 套件,它可以自動從 Google 地圖、OpenStreetMap、Stamen Maps 或 CloudMade Maps 網站上下載指定位置的地圖,讓使用者使用 ggplot
的語法來結合地圖與資料並進行繪製。
除了基本的資料點標示之外,使用者還可以透過 ggmap
的所提供的函數來使用 Google 地圖 API 的各種功能,非常方便。
繪製基本地圖
ggmap
套件中的 get_map
函數可以讓我們在 R 的環境中直接下載地圖,接著再呼叫 ggmap
函數就可以畫出來。若要繪製台灣的地圖,可以執行:
library(ggmap) library(mapproj) map <- get_map(location = 'Taiwan', zoom = 7) ggmap(map)
地圖的位置是透過 location
參數來指定,直接輸入地名即可,而 zoom
則是控制地圖的大小。這是畫出來的圖:
get_map
有相當多的參數可以使用,language
可以設定地圖上文字標示的語言:
map <- get_map(location = 'Taiwan', zoom = 7, language = "zh-TW") ggmap(map)
這是畫出來的圖:
location
參數也可以接受經緯度,需要畫出比較精確的位置時,可以這樣使用:
map <- get_map(location = c(lon = 120.233937, lat = 22.993013), zoom = 10, language = "zh-TW") ggmap(map)
這是畫出來的圖:
maptype
參數可以指定地圖的類型(預設是 terrain
):
map <- get_map(location = c(lon = 120.233937, lat = 22.993013), zoom = 10, language = "zh-TW", maptype = "roadmap") ggmap(map)
以下是幾種常見的地圖類型:
這種黑白的地圖在顯示資料時很好用。
ggmap
的 darken
這個參數可以讓地圖變暗(或是變亮):
map <- get_map(location = c(lon = 120.233937, lat = 22.993013), zoom = 10, language = "zh-TW") ggmap(map, darken = 0.5)
這是畫出來的圖:
若要讓地圖變亮,可以執行:
map <- get_map(location = c(lon = 120.233937, lat = 22.993013), zoom = 10, language = "zh-TW") ggmap(map, darken = c(0.5, "white"))
這是畫出來的圖:
darken
基本上就是在地圖上多加一層圖層,透過指定透明度與顏色,就可以做出很多變化。
YU
您好!
非常感谢您的教学
我想请问您 通过ggmap这个package我们如何在地图上标注不同的点?
我简单介绍一下问题:
我们需要在地图上标注出4所商场的顾客的地理位置 我们现在拥有一个CSV文件 里面标注了顾客们的地理位置 请问如何把这些地理位置(以点的形式)投影在地图上呢 (不同颜色代表不同商场的顾客)?
谢谢!!!!!
YU
您好!
我刚刚尝试了一下 做出了点
map=get_map(location=c(lon=-1.0000000,lat=47.000000),zoom=7,maptype=”roadmap”)
ggmap(map)
ggmap(map) + geom_point(aes(x=-0.76464,y=48.06789))
我大概猜测只需要把geom_point 里的 x值 和y值变成两个columns就可以标出所有的点?
请问有没有办法可以把这些点做成4个classes?每个classes的颜色不同?
谢谢!
HsuanU
謝謝你的整理!
幫助很大
于嫙
很實用,謝謝分享!
ethan
很棒!!佩服
visit here
Nice weblog right here! Also your site rather
a lot up very fast! What web host are you the
use of? Can I am getting your affiliate hyperlink in your
host? I want my website loaded up as fast as yours lol
Get More Info
each time i used to read smaller articles that also clear their motive, and that is also happening with this piece of writing which
I am reading now.