REmap包介紹及使用

#REmap包簡介javascript

#包安裝css

#remapH函數html

     #remapH案例java

#get_theme函數git

#remapC函數github

     #markLineControl函數web

     #markPointControl函數api

     #remapC案例dom

  • REmap包簡介

    REmap包是R與echart的對接,在R裏調用echar的api直接做圖,函數特徵更加簡單,繪圖過程更加方便快捷,若是要個性化繪製能夠修改REmap包源碼, 須要有必定的javascript/css/html 函數

 

remapH函數:該函數主要用於繪製熱力效果圖,如在地圖上繪製不一樣密度的熱力效果

remapC函數:該函數主要用於繪製分塊區域熱力,如在地圖上不一樣省份熱力效果

remapB函數:該函數主要基於百度地圖背景,作遷徙,通勤效果圖

markLineControl,markPointControl,get_theme這三個函數主要用於控制在map圖上畫線, 打點以及主題的各類樣式,如顏色,效果,粗細等。

 

  • 包安裝

a、https://cran.r-project.org/ 上下載對應系統及版本的R軟件,下文環境爲win64的R

b、這次用到的包爲REmap,其掛靠在https://github.com/ 上,只需運行R,依次輸入: 

(1)Install.packages(「devtools」)

此時會談出一個界面,選擇china便可,下載完成後,再輸入:

(2)Library(devtools)

(3)Install_github(「Lchiffon/REmap」),稍等片刻下載完成後,再輸入:

(4)library(REmap)

 

配置完成

注意:1.若是安裝devtools包過程提示沒有digest包error,則再輸入install.packages(「digest」),再重複上述3過程

 

  • remapH函數
remapH(data,
           maptype = 'china',
           theme = get_theme("Dark"),
           blurSize = 30,
           color = c('blue'),
           minAlpha = 0.05,
           opacity = 1,
           )

data:要傳入的數據,數據爲三列,第一列爲經度lon,第二列爲維度lat,第三列爲密度/機率prob

maptype: 要繪製的地址類型,如中國地圖maptype=‘china’,世界地圖maptype=‘world’

theme: 主題,設置該參數後無需設置get_theme裏其餘參數,下文介紹

blurSize: 爲熱力效果的泛化範圍,可調整熱力點中心的擴散程度

color: 熱力的漸變顏色

minAlpha:熱力點的展現閾值,對應data中的prob列,做圖時各點密度會對比minAlpha,以凸顯不一樣密度所展現的不一樣熱力分佈

opacity:透明度,調整熱力圖的透明度

 

remapH案例

> library(REmap)
> options(remap.js.web=T)
> data<- read.csv(file="C:\\Users\\Xu\\Desktop\\cityvaluetop10.csv",header=T)
> theme1 <- get_theme(theme = "none",
+                     lineColor = "white",
+                     backgroundColor = "#CCCCCC", 
+                     titleColor = "#fff",
+                     borderColor = "white", 
+                     regionColor = "Silver",
+                     labelShow = T, 
+                     pointShow = F, 
+                     pointColor = "gold"
+ )
                      
> remapH(data,  #效果以下圖
+        maptype = 'china',
+        theme = theme1,
+        blurSize = 70,
+        color = "red",
+        minAlpha = 10,
+        opacity = 1
+ )
Save img as: ID_20171104005314_62482.html

 

  • get_theme函數
get_theme(theme = "Dark", 
          lineColor = "Random",
          backgroundColor = "#1b1b1b", 
          titleColor = "#fff",
          borderColor = "rgba(100,149,237,1)", 
          regionColor = "#1b1b1b",
          labelShow = T, 
          pointShow = F, 
          pointColor = "gold"
          )

 

theme: 主題,設置該參數後無需設置get_theme裏其餘參數,可選「Dark」,「Sky」,「blue」,「none」四中,當設置get_theme其餘參數時,須要將該參數設置爲「none」

lineColoe:線條顏色,對應爲map圖裏面遷徙線條的顏色

backgroundColor:圖片的背景色,支持16進制顏色輸入,也支持rgb()函數和rgba()

titleColor:標題的顏色,設置同上

borderColor:地圖中各省、市邊界顏色

regionColor:地圖中各區域顏色,各省份和市

labelShow:否展現各省、市名字,設置爲True時展現

pointShow:是否展現各省會,城市所在點,設置爲True時展現

pointColor:設置上述點的顏色

  • remapC函數

該函數主要用於繪製分塊區域熱力,如在地圖上顯示不一樣省份熱力效果

remapC(data,
       maptape = 'china'
       markLineData = NULL,
       markPointData = NULL,
       color = c('#le90ff','#f0ffff'),
       them = get_theme('Bright'),
       title = "",
       subtitle = "",
       markLineTheme = markLineControl(),
       markPointTheme = markPointControl(),
       geoData = NA,
       mindata = NA,
       maxdata = NA)
)

 

data: 表示要傳入的數據,該數據有2列,第一列爲city(各城市,省份名字),第二列爲value(第一列城市對對應的數值)

maptype:要繪製的地址類型,如中國地圖maptype=‘china’,世界地圖maptype=‘world’

markLineData:要繪製的線條數據,該數據前兩列爲必須,第一列爲origin(出發地),第二列爲destination(目的地),此外建議在第三列指定線條顏色,由於在markLineControl裏設置線條顏色容易出錯

markPointData:要繪製的點的數據,該數據爲一列,該列爲要繪製點的名字,此外建議在第二列指定點的顏色,由於在markLineControl裏設置點顏色容易出錯

color:熱力顏色的漸變,第一個爲起始顏色,第二個爲終止顏色

theme:主題,設置該參數後無需設置get_theme裏其餘參數,可選「Dark」,「Sky」,「blue」,「none」四中,當設置get_theme其餘參數時,須要將該參數設置爲「none」

title:標題

subtitle:副標題

markLineTheme:控制線條的樣式參數,該參數由markLineControl函數傳入(後文介紹)

markPointTheme:控制點的樣式參數,該參數由markPointControl函數傳入(後文介紹)

geoData:爲上述點,線涉及到的城市,省份的經緯度,該數據爲三列,第一列lon(經度),第二列lat(維度),第三列city(城市或省份名字)

mindata,maxdata:熱力圖的閾值,低於或高於該值將不會被展現出來

 

     markLineControl函數

markLineControl(symbol = c('none', 'arrow'),
                symbolSize = c(2,4),
                smooth = T,
                smoothness = 0.2,
                effect = T,
                lineWidth = 1,
                lineType = 'solid',
                color = "Random"
                )

 

symbol:控制要繪製線條兩端形狀,第一個爲起點,第二個爲終點,可選樣式有:’pin’, ‘circle’,’rectangle’,’triangle’,’diamond’,’emptyCircle’,’emptyRectangle’,’ emptyTriangle’,’emptyDiamond’,’heart’,’droplet’,’arrow’,’tar’

symbleSize:控制上述參數形狀大小,一樣有兩個值

smooth: 控制線條是否平滑,爲T時,smoothness參數纔有效

smoothness:控制線條的平滑度,爲0時是直線

effect:控制線條是否呈現動態效果,爲T時顯示動態效果,須要注意的是當線條過多時effect參數無效,不會顯示動效

linewidth:控制線條的粗細

lineType:控制線條的形狀,可選樣式有:’solid’, ‘dotted’,’dashed’

color:控制線條的顏色,不建議在此處設置顏色

 

    markPointControl函數

markPointControl(symbol = 'emptyCircle',
                 symbolSize = "Random",
                 effect = T,
                 effectType = 'scale',
                 color = "Random"
                 )

symbol:控制點的形狀,可選樣式有:’pin‘,’circle’,’rectangle’,’triangle’,’diamond’,’emptyCircle’, ’emptyRectangle’,’emptyTriangle’,’emptyDiamond’,’heart’,’droplet’,’arrow’,’tar’

symbolSize:控制上述參數形狀大小

effect:控制點是否呈現動態效果,爲T時顯示動態效果,須要注意的是當點數目過多時effect參數無效,不會顯示動效

effectType:控制點的動效呈現形式,可選樣式有:’scale’ ,’bounce’

color:控制點的顏色,不建議在此處設置顏色

 

remapC案例

> library(REmap)
> options(remap.js.web=T)
> data<- read.csv(file="C:\\Users\\Xu\\Desktop\\cityvaluetop10.csv",header=T)
> theme1 <- get_theme(theme = "none",
+                     lineColor = "white",
+                     backgroundColor = "#CCCCCC", 
+                     titleColor = "#fff",
+                     borderColor = "white", 
+                     regionColor = "Silver",
+                     labelShow = T, 
+                     pointShow = F, 
+                     pointColor = "gold"
+ )
> remapH(data,
+        maptype = 'china',
+        theme = theme1,
+        blurSize = 70,
+        color = "red",
+        minAlpha = 10,
+        opacity = 1
+ )
Save img as: ID_20171104005427_69796.html
> library(REmap)
> options(remap.js.web=T)
> cityvalue <- read.csv(file="C:\\Users\\Xu\\Desktop\\cityvalue.csv",header=T,encoding="gb2312")
> theme1 <- get_theme(theme = "none", 
+                     lineColor = "red",
+                     backgroundColor = "white", 
+                     titleColor = "#fff",
+                     borderColor = "white", 
+                     regionColor = "grey",
+                     labelShow = F, 
+                     pointShow = F, 
+                     pointColor = "gold"
+ )
> markline_data <- data.frame(origin=rep("廣州",10),
+                             destination=c("廣西","湖南","湖北","貴州",
+                                           "河南","江西","福建","北京",
+                                           "浙江","四川"),
+                             color=rep("red",10)
+ )
> markpoint_data <- data.frame(point=c("廣西","湖南","湖北","貴州","河南",
+                                      "江西","福建","北京","浙江","四川"),color=rep("white",10))
> markline_control <- markLineControl(symbolSize=c(0,0),
+                                     smooth=F,
+                                     smoothness=0,
+                                     effect=F,
+                                     lineWidth=1,
+                                     lineType="solid",
+ )
> markpoint_control <- markPointControl(symbol = 'Circle',
+                                       symbolSize = 10,
+                                       effect = T,
+                                       effectType = 'scale',
+ )
> remapC(cityvalue,
+        maptype = 'china',
+        markLineData = markline_data,
+        markPointData = markpoint_data,
+        color = c('#888888','#CDCDCD'),
+        theme = theme1,
+        title = "",
+        subtitle = "",
+        markLineTheme = markline_control,
+        markPointTheme = markpoint_control,
+        #geoData = NA,  geoData參數,此處能夠省略該參數的緣由是由於做圖涉及到城市以及省份數據,remapC函數都會調用內置get_geo_position函數獲取對應經緯度,而這隻有在數據是城市或省份時纔有效
+        #mindata = NA,
+        #maxdata = NA
+ )
Save img as: ID_20171104010458_132853.html
There were 11 warnings (use warnings() to see them)

 

知識整理來自

[1]R語言中文社區

[2]知乎

相關文章
相關標籤/搜索