您好,登錄后才能下訂單哦!
這篇文章主要介紹“R語言可視化實現圖表嵌套”,在日常操作中,相信很多人在R語言可視化實現圖表嵌套問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”R語言可視化實現圖表嵌套”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
之前在學習ggplot的時候,一直存在著一個困惑。
就是這個函數是否允許兩個做出來的兩個相關圖表重疊嵌套(也就是在一個大圖(主圖)的邊緣位置,放置另一個縮小版的小圖)。
這個想法很奇葩,本來想著沒啥希望,鑒于該包的開發者那犀利的審美觀,估計也不能允許這種情況的發生。
不過最近瀏覽一位大神的博客,真的有這種情況的解決措施,喜出望外,趕緊在這里分享給大家。
不過他的處理方式不是通過ggplot的內置函數,而是通過grid包中的viewport函數來實現的:
以下是具體的實現步驟:
加載包:
library(ggplot2) #用于畫圖,主圖和附圖都使用ggplot的內置數據集
library(grid) #用于設定附圖的長寬及疊放在主圖的精確位置
加載并預覽數據集:
這里我們還是使用關于鉆石的那個數據集(之前的圖表案例很多都是使用該數據集)
data(diamonds)
head(diamonds)
#制作復合圖的主圖:
chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))
以上函數可以制作出以carat和price為主要對應關系的散點圖,同時分類變量cut通過顏色映射進行區分。最后調整了圖例位置和圖表背景。
#設定附圖長寬及其最終落在主圖上的精確位置:
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 #預覽附圖
因為附圖要放置在主圖邊緣并且縮放很大比例,為了防止其背景和網格線系統遮擋主圖的重要信息,對其主題元素進行了大量的簡化。
將主圖與附圖合成一并顯示:
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)
其實仔細看這種做法,里面也不外乎圖層疊加,先做出主圖,然后通過viewport函數將附圖縮小并疊加到主圖上,不過這種方式用來展示一些需要多角度透視的數據分布問題還是很合適的,而且因為是依賴于不同的包,所有主圖與附圖之間沒有嚴格的類型限制,你所需要做的只是調整好兩個圖表的位置與大小,別讓彼此相互遮擋掩蓋重要信息就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)
到此,關于“R語言可視化實現圖表嵌套”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。