您好,登錄后才能下訂單哦!
這篇文章主要介紹“R語言可視化實現(xiàn)圖表嵌套”,在日常操作中,相信很多人在R語言可視化實現(xiàn)圖表嵌套問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”R語言可視化實現(xiàn)圖表嵌套”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
之前在學(xué)習(xí)ggplot的時候,一直存在著一個困惑。
就是這個函數(shù)是否允許兩個做出來的兩個相關(guān)圖表重疊嵌套(也就是在一個大圖(主圖)的邊緣位置,放置另一個縮小版的小圖)。
這個想法很奇葩,本來想著沒啥希望,鑒于該包的開發(fā)者那犀利的審美觀,估計也不能允許這種情況的發(fā)生。
不過最近瀏覽一位大神的博客,真的有這種情況的解決措施,喜出望外,趕緊在這里分享給大家。
不過他的處理方式不是通過ggplot的內(nèi)置函數(shù),而是通過grid包中的viewport函數(shù)來實現(xiàn)的:
以下是具體的實現(xiàn)步驟:
加載包:
library(ggplot2) #用于畫圖,主圖和附圖都使用ggplot的內(nèi)置數(shù)據(jù)集
library(grid) #用于設(shè)定附圖的長寬及疊放在主圖的精確位置
加載并預(yù)覽數(shù)據(jù)集:
這里我們還是使用關(guān)于鉆石的那個數(shù)據(jù)集(之前的圖表案例很多都是使用該數(shù)據(jù)集)
data(diamonds)
head(diamonds)
#制作復(fù)合圖的主圖:
chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))
以上函數(shù)可以制作出以carat和price為主要對應(yīng)關(guān)系的散點圖,同時分類變量cut通過顏色映射進(jìn)行區(qū)分。最后調(diào)整了圖例位置和圖表背景。
#設(shè)定附圖長寬及其最終落在主圖上的精確位置:
vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)
#制作附圖
chart2 <-ggplot(diamonds,aes(depth,fill=cut,alpha=.2))+geom_density()+xlim(54,70) +
theme(axis.text.y=element_text(face="bold",colour="black"),
axis.title.y=element_blank(),
axis.text.x=element_text(face="bold",colour="black"),
plot.background=element_rect(I(0),linetype=0),
panel.background=element_rect(I(0)),
panel.grid.major=element_line(colour=NA),
panel.grid.minor=element_line(colour=NA),
legend.background=element_rect(I(0),linetype=1),
legend.position=c(0.85,0.72))
chart2 #預(yù)覽附圖
因為附圖要放置在主圖邊緣并且縮放很大比例,為了防止其背景和網(wǎng)格線系統(tǒng)遮擋主圖的重要信息,對其主題元素進(jìn)行了大量的簡化。
將主圖與附圖合成一并顯示:
print(chart2,vp=vie)
將以上代碼打包組合:
chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))
chart1
vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)
chart2 <-ggplot(diamonds,aes(depth,fill=cut,alpha=.2))+geom_density()+xlim(54,70) +
theme(axis.text.y=element_text(face="bold",colour="black"),
axis.title.y=element_blank(),
axis.text.x=element_text(face="bold",colour="black"),
plot.background=element_rect(I(0),linetype=0),
panel.background=element_rect(I(0)),
panel.grid.major=element_line(colour=NA),
panel.grid.minor=element_line(colour=NA),
legend.background=element_rect(I(0),linetype=1),
legend.position=c(0.85,0.72))
print(chart2,vp=vie)
其實仔細(xì)看這種做法,里面也不外乎圖層疊加,先做出主圖,然后通過viewport函數(shù)將附圖縮小并疊加到主圖上,不過這種方式用來展示一些需要多角度透視的數(shù)據(jù)分布問題還是很合適的,而且因為是依賴于不同的包,所有主圖與附圖之間沒有嚴(yán)格的類型限制,你所需要做的只是調(diào)整好兩個圖表的位置與大小,別讓彼此相互遮擋掩蓋重要信息就OK了。
下面我將附圖的類型更換為堆積直方圖大家看下效果:
chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))
chart1
vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)
chart2 <-ggplot(diamonds,aes(depth,fill=color))+geom_histogram()+xlim(54,70) +
theme(axis.text.y=element_text(face="bold",colour="black"),
axis.title.y=element_blank(),
axis.text.x=element_text(face="bold",colour="black"),
plot.background=element_rect(I(0),linetype=0),
panel.background=element_rect(I(0)),
panel.grid.major=element_line(colour=NA),
panel.grid.minor=element_line(colour=NA),
legend.background=element_rect(I(0),linetype=1),
legend.position=c(0.85,0.72))
print(chart2,vp=vie)
到此,關(guān)于“R語言可視化實現(xiàn)圖表嵌套”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。