本篇內(nèi)容介紹了“R語言怎么實(shí)現(xiàn)地圖上的迷你條形圖”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
站在用戶的角度思考問題,與客戶深入溝通,找到環(huán)江網(wǎng)站設(shè)計(jì)與環(huán)江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋環(huán)江地區(qū)。
加載包:
library(maptools)
library(ggplot2)
library(plyr)
library(ggmap)
導(dǎo)入地圖素材及省會(huì)城市經(jīng)緯度數(shù)據(jù)
china_shp <-readShapePoly("c:/rstudy/bou2_4p.shp")
china_map <- fortify(china_shp)
province_city <- read.csv("c:/rstudy/chinaprovincecity.csv") #城市經(jīng)緯度數(shù)據(jù)
#新建三個(gè)指標(biāo),2015年和2016年的某經(jīng)濟(jì)度量指標(biāo)(虛構(gòu))N15、N16和環(huán)比增長率Ratio。
province_city1<-mutate(province_city,N15=runif(34,min=500,max=1000),N16=runif(34,600,1100),Ratio=round((N16-N15)/N15,3))
province_data<-province_city1[sample(nrow(province_city1),10),]
合并后的數(shù)據(jù)結(jié)構(gòu)如下,隨即選取了10個(gè)城市的14、15年度某項(xiàng)經(jīng)濟(jì)指標(biāo)(虛構(gòu))以及同比增長率。
ggplot的現(xiàn)有圖層圖形中是沒有直接根據(jù)點(diǎn)坐標(biāo)生成條形圖、柱形圖的,所以這里我們只能曲線救國,使用線條圖和誤差線來進(jìn)行模擬。
首先來畫底圖:
ggplot()+
geom_polygon(aes(x=long, y=lat, group=group), data=china_map, fill="white", colour="grey60")
接下來使用geom_linerange函數(shù)(也就是條線圖函數(shù))進(jìn)行各個(gè)坐標(biāo)點(diǎn)的模擬柱形繪制。
線畫出14年的指標(biāo)值:
ggplot()+
geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+
geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+N15/max(N15,N16)*5),size=5,color="orange",alpha=0.8)
再疊加一次16年的指標(biāo)值
ggplot()+
geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+
geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",alpha=0.8)+
geom_linerange(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",alpha=0.8)
接下來我們來對已經(jīng)塑造好的雙柱條形圖進(jìn)行美化操作,
windowsFonts(myFont = windowsFont("微軟雅黑"))
ggplot()+
geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+
geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",alpha=0.8)+
geom_linerange(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",alpha=0.8)+
geom_text(aes(x=jd,y=wd-0.6,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+
theme_nothing()+
annotate("text", x=105, y=52, label="● 2015", color= "#5B88A0", size=8)+
annotate("text", x=105, y=49, label="● 2016", color= "#FB882C", size=8)
其實(shí)最初在網(wǎng)上看到該圖(大概是劉萬祥老師的博客,在此感謝老師的啟發(fā)),他的做法是使用geom_errbar圖層函數(shù),也就是誤差線圖層函數(shù),其實(shí)理念是一致的。這里給出原方法。
ggplot()+
geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+
geom_errorbar(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",width=0,alpha=0.8)+
geom_errorbar(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",width=0,alpha=0.8)+
geom_text(aes(x=jd,y=wd-0.6,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+
theme_nothing()+
annotate("text", x=105, y=52, label="● 2014", color= "#5B88A0", size=8)+
annotate("text", x=105, y=49, label="● 2015", color= "#FB882C", size=8)
其實(shí)如果能換個(gè)思路,使用geom_errorh函數(shù),想必一定了以做出橫向的條形圖。
ggplot()+
geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+
geom_errorbarh(data=province_data,aes(x=jd,y=wd,xmin=jd-3,xmax=jd+3*N15/max(N15,N16)),size=3,color="#5B88A0",height=0,alpha=0.8)+
geom_errorbarh(data=province_data,aes(x=jd,y=wd-0.8,xmin=jd-3,xmax=jd+3*N16/max(N15,N16)),size=3,color="#FB882C",height=0,alpha=0.8)+
geom_text(aes(x=jd+0.2,y=wd+1,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+
theme_nothing()+
annotate("text", x=105, y=52, label="● 2015", color= "#5B88A0", size=7)+
annotate("text", x=105, y=50, label="● 2016", color= "#FB882C", size=7)
“R語言怎么實(shí)現(xiàn)地圖上的迷你條形圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁題目:R語言怎么實(shí)現(xiàn)地圖上的迷你條形圖
文章起源:http://aaarwkj.com/article44/gooeee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、響應(yīng)式網(wǎng)站、網(wǎng)站改版、全網(wǎng)營銷推廣、ChatGPT、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)