溫馨提示×

溫馨提示×

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

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

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

發(fā)布時間:2021-12-06 09:45:06 來源:億速云 閱讀:368 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

今天這一篇是昨天推送的基礎(chǔ)上進行了進一步的深化,主要講如何在離散顏色填充的地圖上進行氣泡圖圖層疊加。

為了使得案例前后一致,仍然使用昨天的數(shù)據(jù)集。

加載包:

library("ggplot2")

library("plyr")

library("maptools")

library("sp")

library("ggthemes")

導(dǎo)入中國省界地圖:

china_map<-readShapePoly("D:/R/rstudy/CHN_adm/bou2_4p.shp")

data1<- china_map@data      

data2<- data.frame(id=row.names(data1),data1) 

數(shù)據(jù)格式轉(zhuǎn)化及業(yè)務(wù)數(shù)據(jù)合并:

china_map1 <- fortify(china_map) 

china_map_data <- join(china_map1,data2, type = "full") 

mydata <- read.csv("D:/R/rstudy/Province/geshengzhibiao.csv")

china_data <- join(china_map_data, mydata, type="full")

各省省會城市經(jīng)緯度數(shù)據(jù):

province_city <- read.csv("D:/R/rstudy/Province/chinaprovincecity.csv") 

###根據(jù)自己的數(shù)據(jù)量級和具體業(yè)務(wù)需要設(shè)置分割點

mydata<-mydata[,-c(5,6)]

mydata$zhibiao<-rnorm(33,100,50)

mydata$zhibiao<-abs(mydata$zhibiao)

mydata$zhibiao2<-round(mydata$zhibiao,0)

mydata$fau <- cut(mydata$zhibiao, breaks = c(0,50,100,150,200,250)) 

###將轉(zhuǎn)換的分段因子變量重新命名為我們需要的分段閥值:

mydata$fam<-factor(mydata$fau,levels=c('(0,50]','(50,100]','(100,150]','(150,200]','(200,250]'),labels=c('0~50','50~100','100~150','150~200','200~250'),order=TRUE)

#將業(yè)務(wù)數(shù)據(jù)與地理信息數(shù)據(jù)合并:

china_data <- join(china_map_data, mydata, type="full") 

windowsFonts(myFont = windowsFont("微軟雅黑"))

離散標度填充:

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

     geom_polygon(colour="white")+

     scale_fill_brewer(palette="Blues") +  ###Blues&Greens

     coord_map("polyconic") +

     ggtitle("某公司2015~2016年度營業(yè)狀況分布圖")+  

     guides(fill=guide_legend(reverse=TRUE,title=NULL))+       

     theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)              

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

在離散顏色標度的基礎(chǔ)上添加各省份散點圖:

ggplot() +

     geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

     geom_point(data=province_city,aes(x=jd,y=wd),colour="red")+

     scale_fill_brewer(palette="Blues") +  ###Blues&Greens

     coord_map("polyconic") +

     ggtitle("某公司2015~2016年度營業(yè)狀況分布圖")+  #寫入標題

     guides(fill=guide_legend(reverse=TRUE,title=NULL))+       

     theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)    

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

更該散點圖為氣泡圖:

province_city$PerforamA<-round(rnorm(34,100,30),0)

province_city$PerforamB<-round(rnorm(34,100,30),0)

ggplot() +

     geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

 geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA),shape=21,fill="#8E0F2E",colour="black",alpha=0.6)+

     scale_fill_brewer(palette="Blues") +  ###Blues&Greens

     scale_size_area(max_size=6)+

     coord_map("polyconic") +

     ggtitle("某公司2015~2016年度營業(yè)狀況分布圖")+  #寫入標題

   guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+ 

   theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)    

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

本來打算再繼續(xù)在氣泡圖的基礎(chǔ)上進行顏色漸變填充呢,可以試了一下,這樣的話前面的底圖離散顏色標度填充的的時候已經(jīng)使用過了一個fill屬性設(shè)置選項,而要對氣泡圖進行顏色漸變填充就要再使用一次fill屬性,可是目前為止我還不知道如何在多圖層中出現(xiàn)多個fill屬性的時候如何識別并分別進行標度設(shè)置,當我運行如下代碼時,軟件無法識別兩個顏色標度設(shè)置分別對應(yīng)的指標,因而圖表無法跑出來:

ggplot() +

     geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

     scale_fill_brewer(palette="Blues") +  ###Blues&Greens  geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA,fill=PerforamB),shape=21,fill="#8E0F2E",colour="black",alpha=0.6)+     

     scale_size_area(max_size=6)+

     scale_fill_gradient2(low="DarkCyan", mid="Azure", high="Sienna", midpoint=median(province_city$PerforamB))+ 

     coord_map("polyconic") +

     ggtitle("某公司2015~2016年度營業(yè)狀況分布圖")+  #寫入標題

 guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+   

 theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)    

Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.

Error: Discrete value supplied to continuous scale

實在是太遺憾了,不知道哪位大神知道如何處理多圖層相同的fill屬性,可以告知在下,這里先行謝過了。

那么這個問題真的那么難解決嗎,倘若放在半年以前,確實如此,那個時候為此糾結(jié)了很久,一直耿耿于懷,可是如今的我,水平已經(jīng)今非昔比了哈哈哈(容我傲嬌一下~)

其實問題是這樣的,該圖表對象的需要三層顏色標度映射。

  • 最底層的離散填充標度;

  • 氣泡圖的大小標度:

  • 氣泡圖的填充標度;

困擾我的問題是,底層的多邊形填充使用了一次fill屬性,而氣泡的顏色填充又使用了一次fill屬性,所以兩個顏色標度——

撞車了……

軟件無法識別兩個標度參數(shù):

  • scale_fill_brewer(palette="Blues") 

  • scale_fill_gradient2(low="DarkCyan", mid="Azure", high="Sienna")

分別是作用于那個圖層的:

  • geom_polygon()

  • geom_point()

所以自己就崩潰罷工了~

當時想的方法是,是否可以給兩個fill標度進行組合或者命名,最后也沒搞定該如何進行區(qū)分。

前不久跟我的一個朋友聊天,聊起這個問題,也沒有直接的解決方法, 可以聊天過程中突然發(fā)現(xiàn)了一條線索,R語言環(huán)境中的形狀一共有25種,其中1~20種僅有colour屬性而沒有fill屬性,21~25種既有colour屬性又有fill屬性,而我平時作圖使用氣泡圖的時候,用慣了21號形狀(主要是擁有兩個顏色調(diào)整參數(shù),比較利于后期屬性調(diào)整)。

所以針對這個案例,使用21號形狀的fill屬性進行氣泡內(nèi)顏色標度映射,必然與多邊形的fill映射沖撞,那么現(xiàn)在問題就好辦了,放棄使用21號形狀,選擇一個只有colour屬性映射的形狀編號進行映射。

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

其中16、19號都符合要求,我隨表挑選一個16號吧……

ggplot() +

     geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

     scale_fill_brewer(palette="Greens") +  ###Blues&Greens

     geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA,colour=PerforamB),shape=16)+     

     scale_size_area(max_size=6)+

     scale_colour_gradient(low="white",high="#D73434")+ 

     coord_map("polyconic") +

     ggtitle("某公司2015~2016年度營業(yè)狀況分布圖")+  #寫入標題

     guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+       

     theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)   

大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案

OK,完美的解決了標度重疊問題,現(xiàn)在該地圖已經(jīng)用了三個可用的顏色標度了!

上述就是小編為大家分享的大數(shù)據(jù)中數(shù)據(jù)地圖多圖層對象的顏色標度重疊問題的解決方案了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

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

AI