這篇文章主要介紹了ggplot2中怎么自定義數(shù)據(jù)地圖版面范圍,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供鄱陽(yáng)企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、成都網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為鄱陽(yáng)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
之前聯(lián)系過(guò)程中遇到的一個(gè)小技術(shù)問(wèn)題,就是在ggplot2制作數(shù)據(jù)地圖時(shí),使用標(biāo)度調(diào)整參數(shù)進(jìn)行范圍限定時(shí),總是出現(xiàn)錯(cuò)誤,版面上出現(xiàn)交錯(cuò)的線條和條帶。
應(yīng)該是自己添加的標(biāo)度限定參數(shù)與ggplot2映射規(guī)則出現(xiàn)了沖突,特別再加上空間投影參數(shù),這種沖突和錯(cuò)亂就顯得更加明顯。
其實(shí)我就是想要獲取這樣一幅數(shù)據(jù)地圖,而不是做完整個(gè)世界地圖之后再去裁剪導(dǎo)出的圖片。(那樣會(huì)顯得很不fashion)。
library("ggplot2")
library("plyr")
library("maptools")
library("ggthemes")
options(stringsAsFactors=FALSE,warn=FALSE)
world_map <-readShapePoly("D:/R/rstudy/wold_map/World_region.shp")
x <- world_map@data
xs <- data.frame(x,id=seq(0:250)-1)
world_map1 <- fortify(world_map)
world_map_data <- join(world_map1, xs, type = "full")
mydata <- read.csv("D:/R/rstudy/wold_map/Region_map.csv")
mydata$fam<-cut(mydata$zhibiao1,breaks=c(0,100,200,300,400,500),labels=c('0~100','100~200','200~300','300~400','400~500'),order=TRUE,include.lowest=TRUE)
world_data <- join(world_map_data, mydata, type="full")
這是完整的世界地圖:
windowsFonts(myfont=windowsFont("微軟雅黑 Light"))
ggplot(world_data, aes(x = long, y = lat, group = group,fill =fam)) +
geom_polygon(colour="white")+
scale_fill_brewer(palette="Blues") + ###Blues&Greens
ggtitle("某公司2015~2016年度營(yíng)業(yè)狀況分布圖")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_map() %+replace%
theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)
倘若我想將該地圖版面聚焦到中國(guó)的領(lǐng)土范圍內(nèi),但是呢,又不想單獨(dú)呈現(xiàn)孤零零的中國(guó)地圖,我需要中國(guó)周邊的這些鄰國(guó)邊界,來(lái)鎖定中國(guó)在亞洲地區(qū)的大致位置,這些周邊領(lǐng)國(guó)邊界不要求都擁完整的行政區(qū)劃,可以根據(jù)版面的需要,進(jìn)行矩形切割就行。
這樣看起來(lái)必須對(duì)世界地圖進(jìn)行切割,而且需要切割的是美學(xué)映射參數(shù)x,y的范圍(也就是坐標(biāo)系統(tǒng)的范圍)。
我們都知道在ggplot2系統(tǒng)中,調(diào)整X,Y的標(biāo)度范圍擁有布置一個(gè)的可選參數(shù):
xlim/ylim
expand_limits()
scale_x/y_continuous()
其實(shí)坐標(biāo)軸系統(tǒng)中也可以嵌入標(biāo)度調(diào)整參數(shù):
coord_map()
那么應(yīng)該使用哪個(gè)方法進(jìn)行調(diào)整呢,這里就賣(mài)個(gè)關(guān)子,我們一個(gè)一個(gè)來(lái)嘗試:
切割的范圍為:
經(jīng)度:60~155
維度:0~65
這個(gè)范圍剛好可以涵蓋我國(guó)領(lǐng)土的完整范圍:
方案一:xlim/ylim
ggplot(world_data, aes(x = long, y = lat, group = group,fill =fam)) +
geom_polygon(colour="white")+
xlim(60,155)+ylim(0,65)+
scale_fill_brewer(palette="Blues") +
coord_map("polyconic") +
ggtitle("某公司2015~2016年度營(yíng)業(yè)狀況分布圖")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_map() %+replace%
theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)
切割效果如下,有反饋但是效果不佳,未達(dá)到目的,第一種方案宣告失敗。
方案二:expand_limits()
ggplot(world_data, aes(x = long,y=lat,group=group)) +
geom_polygon(aes(fill =fam),colour="white")+
expand_limits(x=c(60,155),y=c(0,65))+
scale_fill_brewer(palette="Blues") +
coord_map("polyconic") +
ggtitle("某公司2015~2016年度營(yíng)業(yè)狀況分布圖")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_map() %+replace%
theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)
這次結(jié)果又失敗了,不僅沒(méi)有完成目標(biāo),底部還出現(xiàn)了一條莫名其妙的線條。
方案三:scale_x/y_continuous()
ggplot(world_data, aes(x = long, y = lat, group = group,fill =fam)) +
geom_polygon(colour="white")+
scale_x_continuous(limits=c(60,155))+
scale_y_continuous(limits=c(0,65))+
scale_fill_brewer(palette="Blues") +
coord_map("polyconic") +
ggtitle("某公司2015~2016年度營(yíng)業(yè)狀況分布圖")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_map() %+replace%
theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)
第三種方案又以失敗告終,結(jié)果跟第一種的問(wèn)題一模一樣。
那么現(xiàn)在就剩最后一一種方案啦,希望這次能成功。
方案四:coord_map()
ggplot(world_data,aes(x =long,y=lat,group=group,fill=fam))+
geom_polygon(colour="white")+
scale_fill_brewer(palette="Blues") +
coord_cartesian(xlim=c(60,155),ylim=c(0,65))+
ggtitle("某公司2015~2016年度營(yíng)業(yè)狀況分布圖")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_map() %+replace%
theme(title=element_text(family="myfont"),legend.position=c(0.88,0.3),legend.text.align=1)
ok,這次成功了,但是我放棄了使用coord_map()空間投影參數(shù),而是使用了普通的笛卡爾二維坐標(biāo)。
在ggplot2版面中制作數(shù)據(jù)對(duì)圖,想要對(duì)版面進(jìn)行有效的控制,需將標(biāo)度范圍的調(diào)整參數(shù)在坐標(biāo)系內(nèi)進(jìn)行限定,否則會(huì)出現(xiàn)錯(cuò)亂,而是在限定范圍的同時(shí)可能需要放棄使用空間投影(有沒(méi)有更好的解決方案,目前還未知,留待以后解決)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ggplot2中怎么自定義數(shù)據(jù)地圖版面范圍”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
名稱(chēng)欄目:ggplot2中怎么自定義數(shù)據(jù)地圖版面范圍
文章起源:http://www.rwnh.cn/article22/jdjicc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、面包屑導(dǎo)航、網(wǎng)站營(yíng)銷(xiāo)、自適應(yīng)網(wǎng)站、ChatGPT、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)