R語言可視化——案例綜合運用

今天跟大家介紹一個REmap包的新函數——REmapB。

它是REmap包中諸多組函數中的一位,功能上要強大於之前介紹的REmap函數,不僅可以完成REmap函數的所有圖表效果,而且可以做出前者沒有的地圖效果。

以下是該函數的詳細語法及參數:

?remapBremapB(center = c(104.114129,37.550339), zoom = 5, color = "Bright", title = "", subtitle = "", markLineData = NA, markPointData = NA, markLineTheme = markLineControl(), markPointTheme = markPointControl(), geoData = NA)

參數說明:參數一:center為地圖中心,經緯度格式;參數二:zoom為縮放設置,默認為5,代表全國地圖,增大至10可放大至地市參數三:color為地圖顏色,可選有"Bright", "Blue", "light", "dark", "redalert", "googlelite", "grassgreen", "midnight", "pink", "darkgreen", "bluish", "grayscale", "hardedge"參數四:title為地圖主標題參數五:subtitle為地圖副標題參數六:markLineData為繪製線條需要的數據,包括起點和終點兩列參數七:markPointDate為繪製點需要的數據,僅終點一列參數八:markLineTheme為線條主題設置,通過markLineControl( )函數設置參數九:markPointTheme為點主題設置,通過markPointControl( )函數設置參數十:geoData為點、線繪製的地理位置數據存儲,可以只是輸入經緯度數據,也可通過get_geo_position(『地點』)獲取其中以上參數中,markLineTheme和markLineTheme內含有諸

多屬性設置,類似REmap中的theme設置:

markLineTheme = markLineControl(symbol = NA,#控制線型symbolSize = c(0,4), #線條粗度變動範圍smooth = T, #啟用線條平滑度設置smoothness =0.2, #線條平滑度effect = T, #線條動效lineWidth = 2, #線寬lineType = 『dotted』, #線條類別color =『Random』) #線條顏色

參數說明:參數一:symbol為標記樣式,具體指線條兩端的標記的形狀,兩個值分別為起點和終點,經過實際使用symbol參數不可修改參數二:symbolSize為線條兩端標記大小,對應symbol參數的兩個值,實際上第一個值沒用,因為開始標記為none參數三:smooth為邏輯參數,設置線條是否平滑參數四:smoothness為平滑度,smooth參數設置為T時有效,體現線條的弧度,減小到0時為直線參數五:effect為邏輯參數,是否顯示動態效果參數六:lineWidth為線條粗細參數七:lineType為線條類型,可選有solid(實線)、dotted(點線)、dashed(虛線)參數八:color為線條顏色

根據以上參數名稱,可以大致了解每一個參數的含義:

markPointTheme = markPointControl(symbol = "heart", #點形狀symbolSize = "Random", #點大小effect = T, #動效啟用effectType = "scale", #動效類型color = "Random") #顏色

參數說明:

參數一:symbol為點樣式,可選項none、circle、rectangle、triangle、diamond、emptyCirle、emptyRectangle、emptyTriangle、emptyDiamond、heart、droplet、pin、arrow、star參數二:symbolSize為點大小參數三:effect為邏輯參數,是否顯示動態效果參數四:effectType為動態效果樣式,可選scale(放大)和bounce(跳動)參數五:color為點顏色

解讀:effect參數在點太多時,動態效果會失效,這時建議設置為FALSE。在remapB( )函數中通過另外一個參數markPointData也可以設置點顏色,優先順序高於color參數。

接下來我們可以根據以上參數說明製作一個一對多的流向圖:

今天跟大家介紹一個REmap包的新函數——REmapB。

它是REmap包中諸多組函數中的一位,功能上要強大於之前介紹的REmap函數,不僅可以完成REmap函數的所有圖表效果,而且可以做出前者沒有的地圖效果。

以下是該函數的詳細語法及參數:

?remapBremapB(center = c(104.114129,37.550339), zoom = 5, color = "Bright", title = "", subtitle = "", markLineData = NA, markPointData = NA, markLineTheme = markLineControl(), markPointTheme = markPointControl(), geoData = NA)

參數說明:

參數一:center為地圖中心,經緯度格式;參數二:zoom為縮放設置,默認為5,代表全國地圖,增大至10可放大至地市參數三:color為地圖顏色,可選有"Bright", "Blue", "light", "dark", "redalert", "googlelite", "grassgreen", "midnight", "pink", "darkgreen", "bluish", "grayscale", "hardedge"參數四:title為地圖主標題參數五:subtitle為地圖副標題參數六:markLineData為繪製線條需要的數據,包括起點和終點兩列參數七:markPointDate為繪製點需要的數據,僅終點一列參數八:markLineTheme為線條主題設置,通過markLineControl( )函數設置參數九:markPointTheme為點主題設置,通過markPointControl( )函數設置參數十:geoData為點、線繪製的地理位置數據存儲,可以只是輸入經緯度數據,也可通過get_geo_position(『地點』)獲取

其中以上參數中,markLineTheme和markLineTheme內含有諸多屬性設置,類似REmap中的theme設置:

markLineTheme = markLineControl(symbol = NA,#控制線型symbolSize = c(0,4), #線條粗度變動範圍smooth = T, #啟用線條平滑度設置smoothness =0.2, #線條平滑度effect = T, #線條動效lineWidth = 2, #線寬lineType = 『dotted』, #線條類別color =『Random』) #線條顏色

參數說明:

參數一:symbol為標記樣式,具體指線條兩端的標記的形狀,兩個值分別為起點和終點,經過實際使用symbol參數不可修改參數二:symbolSize為線條兩端標記大小,對應symbol參數的兩個值,實際上第一個值沒用,因為開始標記為none參數三:smooth為邏輯參數,設置線條是否平滑參數四:smoothness為平滑度,smooth參數設置為T時有效,體現線條的弧度,減小到0時為直線參數五:effect為邏輯參數,是否顯示動態效果參數六:lineWidth為線條粗細參數七:lineType為線條類型,可選有solid(實線)、dotted(點線)、dashed(虛線)參數八:color為線條顏色

根據以上參數名稱,可以大致了解每一個參數的含義:

markPointTheme = markPointControl(symbol = "heart", #點形狀symbolSize = "Random", #點大小effect = T, #動效啟用effectType = "scale", #動效類型color = "Random") #顏色

參數說明:

參數一:symbol為點樣式,可選項none、circle、rectangle、triangle、diamond、emptyCirle、emptyRectangle、emptyTriangle、emptyDiamond、heart、droplet、pin、arrow、star參數二:symbolSize為點大小參數三:effect為邏輯參數,是否顯示動態效果參數四:effectType為動態效果樣式,可選scale(放大)和bounce(跳動)參數五:color為點顏色解讀:effect參數在點太多時,動態效果會失效,這時建議設置為FALSE。在remapB( )函數中通過另外一個參數markPointData也可以設置點顏色,優先順序高於color參數。

接下來我們可以根據以上參數說明製作一個一對多的流向圖:

通過設置markLineTheme、markPointTheme兩個主題內部的詳細風格參數,你可以對線條以及數據點的氣泡進行個性化設置。

map_out1<-remapB(zoom=5, color="dark", title="我是主標題", subtitle="我是副標題", markLineData=map_data, markPointData=destination, markLineTheme = markLineControl( symbol = NA, symbolSize = c(0,4), smooth = T, smoothness =0.2, effect = T, lineWidth = 2, lineType ="dotted", color ="white"), markPointTheme = markPointControl( symbol = "heart", symbolSize = "Random", effect = T, effectType = "scale", color = "white") )plot(map_out1)

如果只想要繪製流向線而不需要終點的點的話,直接給markPointData賦值為NA就可以了。

只要將我們的數據結構重新整理,就可以製作出路徑地圖:

newdata<- c("shanghai","guangzhou","chengdu","xian","taiyuan","濟南","shanghai") origin<-c(newdata[-7])destination<-c(newdata[-1])map_data<- data.frame(origin,destination)map_out2<-remapB(zoom=5, color="dark", title="我是主標題", subtitle="我是副標題", markLineData=map_data, markPointData=destination, markLineTheme = markLineControl( symbol = NA, symbolSize = c(0,4), smooth = T, smoothness =0.2, effect = T, lineWidth = 2, lineType ="dotted", color ="white"), markPointTheme = markPointControl( symbol = "heart", symbolSize = "Random", effect = T, effectType = "scale", color = "white") )plot(map_out2)

最後一個案例使用REmapB函數製作目標分布圖:

首先搜索大連地區的大學:

載入百度地圖包:library("baidumap")#查找大連的所有大學dl_college <- getPlace("大學","大連")Get 125 records, 7 page. Getting 0 th page Getting 1 th page Getting 2 th page Getting 3 th page Getting 4 th page Getting 5 th page Getting 6 th page Done!

head(dl_college) name address lat lon1 大連工業大學 輕工苑1號 38.97890 121.53322 大連理工大學 遼寧省大連市甘井子區凌工路2號 38.88868 121.53623 大連海事大學 遼寧省大連市凌海路1號 38.87753 121.53874 大連交通大學(沙河口校區) 沙河口區黃河路794號交通大學小吃一條街內(近西南路) 38.91790 121.57705 大連外國語大學(旅順校區) 中國遼寧省大連市旅順南路西段6號 38.81853 121.31546 大連大學 學府大街10號 39.10660 121.8282 telephone1 (0411)863236932 <NA>3 <NA>4 (0411)841063135 (0411)861111576 (0411)87402114

str(dl_college)"data.frame": 125 obs. of 5 variables: $ name : chr "大連工業大學" "大連理工大學" "大連海事大學" "大連交通大學(沙河口校區)" ... $ address : chr "輕工苑1號" "遼寧省大連市甘井子區凌工路2號" "遼寧省大連市凌海路1號" "沙河口區黃河路794號交通大學小吃一條街內(近西南路)" ... $ lat : num 39 38.9 38.9 38.9 38.8 ... $ lon : num 122 122 122 122 121 ... $ telephone: chr "(0411)86323693" NA NA "(0411)84106313" ...

一共抓取了大連地區的125個帶有大學的機構經緯度地址:

構造作圖數據:

newdata1<-dl_college[,c(3,4,1)]head(newdata1) name lat lon1 大連工業大學 38.97890 121.53322 大連理工大學 38.88868 121.53623 大連海事大學 38.87753 121.53874 大連交通大學(沙河口校區) 38.91790 121.57705 大連外國語大學(旅順校區) 38.81853 121.31546 大連大學 39.10660 121.8282

newdata2<-newdata1[,c(2,1,3)]map_out3 <- remapB(center = c(121.62139,38.91934), zoom = 14, color = "Blue", title = "大連高校分布圖", markPointData =newdata2[3], markPointTheme = markPointControl( symbol = "pin", symbolSize = 3, effect = T, color = "yellow"), geoData =newdata2 )plot(map_out3)

如果想要存儲該HTML對象,需要設定臨時目錄:

setwd("D:/R/Rscript") #保存圖片的位置,不做修改默認為R的工作路徑options(remap.js.web=T) #動態網頁圖保存命令plot(map_out3) #保存的同時自動調用瀏覽器窗口

聯繫方式:

wechat:ljty1991

Mail:578708965@qq.com

個人公眾號:數據小魔方(datamofang)

團隊公眾號:EasyCharts

qq交流群:[魔方學院]553270834

github:ljtyduyu (RainDu)


推薦閱讀:

用R繪製遷移軌跡圖
Live學習筆記——R語言入門與基礎繪圖系統
可視化:ggplot2包、lattice包、rCharts包
【數據分析·實戰】北京的霧霾是大風吹走的嗎

TAG:R编程语言 | 数据可视化 | 地图 |