溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用R語言制作熱力數(shù)據(jù)地圖

發(fā)布時(shí)間:2021-11-22 10:44:00 來源:億速云 閱讀:252 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)如何使用R語言制作熱力數(shù)據(jù)地圖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

今天跟大家分享的是使用R語言制作熱力數(shù)據(jù)地圖

也許很多小伙伴兒對(duì)于R語言還很陌生,感覺很神秘。

確實(shí),R語言的數(shù)據(jù)地圖需要使用很長的代碼來寫。但是就像我們學(xué)習(xí)高數(shù)和微積分一樣,再復(fù)雜再龐大的公式,都會(huì)有計(jì)算軟件幫你代勞,而你只需要知道怎么調(diào)整參數(shù)、控制路徑,并且明白每一句代碼的實(shí)現(xiàn)功能就可以了,無需記住每一串代碼的詳細(xì)內(nèi)涵和寫法。

而且接下來要寫的諸多代碼,大部分都并非自己寫的,而是從網(wǎng)上拼湊,經(jīng)過整理與匯總后的。坦白的說,絕大部分自己都寫不出來,語法也很費(fèi)解,只是勉強(qiáng)知道大概可以實(shí)現(xiàn)什么功能。

但是我依然能夠達(dá)到自己的目的,自定義所需的指標(biāo)數(shù)據(jù),自定義輸出的數(shù)據(jù)地圖的填充顏色、標(biāo)簽等外觀和格式。

首先介紹小魔方的R語言系統(tǒng)配置環(huán)境:

R version 3.2.3

RStudio Version 0.99.484

因?yàn)镽語言原始編輯器的操作不夠靈活,所以我將在R的第三方編譯器:R Studio中完成以下的數(shù)據(jù)地圖代碼操作。

在正式開始之前,必須確保你的R語言環(huán)境中已經(jīng)安裝以下包:

ggplot2

plyr

maptools

如果還未安裝,需要先安裝:install.packages("ggplot2","plyr","maptools")

然后下載地圖的作圖數(shù)據(jù)文件:(該文件獲取途徑比較難,所以我會(huì)直接共享在網(wǎng)盤里,點(diǎn)擊文末閱讀原文獲取。)

獲取該作圖數(shù)據(jù)文件包之后解壓放在C盤根目錄下。(這路徑比較短,易于引用,無需再修改代碼引用路徑。)

下面是正式作圖步驟:

1、加載所需要的R包:

library(ggplot2)

library(plyr)

library(maptools)

2、讀入作圖數(shù)據(jù):

china_map = readShapePoly("c:/rstudy/bou2_4p.shp")

你可以通過代碼查看該數(shù)據(jù)文件的數(shù)據(jù)結(jié)構(gòu):

summary(china_map)

如何使用R語言制作熱力數(shù)據(jù)地圖

3、整理與合并作圖作圖數(shù)據(jù)

x <- china_map@data          #讀取行政信息

xs <- data.frame(x,id=seq(0:924)-1)  #含島嶼共925個(gè)形狀

china_map1 <- fortify(china_map) #轉(zhuǎn)化為數(shù)據(jù)框

china_map_data <- join(china_map1, xs, type = "full") #合并兩個(gè)數(shù)據(jù)框

以上四句代碼是從原始地圖數(shù)據(jù)文件中提取地圖經(jīng)緯度坐標(biāo)和行政區(qū)劃名稱并合并成一個(gè)數(shù)據(jù)文件:china_map_data

通過代碼:head(china_map_data)

你可以查看到該合并文件的內(nèi)部結(jié)構(gòu):

如何使用R語言制作熱力數(shù)據(jù)地圖

4、讀入指標(biāo)數(shù)據(jù)

mydata <- read.csv("c:/rstudy/geshengzhibiao.csv") #讀取業(yè)務(wù)指標(biāo)數(shù)據(jù),csv格式

以上的geshengzhibiao.csv數(shù)據(jù)文件是我單獨(dú)使用excel完成數(shù)據(jù)輸入并另存為.CSV格式(與之前下載的地圖數(shù)據(jù)文件存放在一個(gè)地方,便于引用)的指標(biāo)數(shù)據(jù)文件,也就是我們以后用來輸入自己業(yè)務(wù)指標(biāo)的數(shù)據(jù)文件。(最后共享的文件里包含此.CSV文件,你只需要使用excel打開,修改為自己需要的指標(biāo)數(shù)據(jù),并繼續(xù)存為.CSV格式就可以了)

數(shù)據(jù)結(jié)構(gòu)如下:

如何使用R語言制作熱力數(shù)據(jù)地圖

china_data <- join(china_map_data, mydata, type="full")  #合并兩個(gè)數(shù)據(jù)框

5、輸出地圖(這個(gè)代碼有點(diǎn)復(fù)雜,不過你只需要理解其中幾個(gè)重要環(huán)節(jié)參數(shù)就OK了)

ggplot(china_data, aes(x = long, y = lat, group = group,fill = zhibiao)) +

     geom_polygon(colour="grey40") +

     scale_fill_gradient(low="white",high="steelblue") +  #指定漸變填充色,可使用RGB

     coord_map("polyconic") +       #指定投影方式為polyconic,獲得常見視角中國地圖

     theme(               #清除不需要的元素

          panel.grid = element_blank(),

          panel.background = element_blank(),

          axis.text = element_blank(),

          axis.ticks = element_blank(),

          axis.title = element_blank(),

          legend.position = c(0.2,0.3)

          ) #【無省名:】

如何使用R語言制作熱力數(shù)據(jù)地圖

以上代碼及其輸出的熱力數(shù)據(jù)地圖是使用R中的經(jīng)典數(shù)據(jù)可視化包——ggplot2包完成的。其中通過多個(gè)圖層疊加(圖層之間用“+”實(shí)現(xiàn)連接)。

其中輪廓線顏色是使用geom_polygon(colour="grey40")完成的;

填充的漸變色是通過制定漸變色范圍實(shí)現(xiàn)的:scale_fill_gradient(low="white",high="steelblue")

指標(biāo)引用是通過fill = zhibiao實(shí)現(xiàn)的,其他的語句是控制圖層元素(一些無傷大雅的元素)

以上版本地圖是無標(biāo)簽版的熱力數(shù)據(jù)地圖。

下面的代碼是給地圖添加省份標(biāo)簽和數(shù)值指標(biāo):

province_city <- read.csv("c:/rstudy/chinaprovincecity.csv")  #讀取省會(huì)城市坐標(biāo)

ggplot(china_data,aes(long,lat))+

     geom_polygon(aes(group=group,fill=zhibiao),colour="grey60")+

     scale_fill_gradient(low="white",high="steelblue") +

     coord_map("polyconic") +

 geom_text(aes(x = jd,y = wd,label = province), data =province_city)+

     theme(

          panel.grid = element_blank(),

          panel.background = element_blank(),

          axis.text = element_blank(),

          axis.ticks = element_blank(),

          axis.title = element_blank()

          )  #【帶省標(biāo)簽:】

語法上略有不同,但大同小異,可以參照上面的理解。

看完上述內(nèi)容,你們對(duì)如何使用R語言制作熱力數(shù)據(jù)地圖有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI