您好,登錄后才能下訂單哦!
本篇內容介紹了“R語言可視化圖表排版中的頁多圖介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
昨天跟大家分享了關于圖表嵌套的函數用法,今天跟大家分享在多圖情況下如何正確的進行圖表的版面布局。
這里要分享的圖表版面設計其實就是指,在做了很多圖的情況下,如何將諸多圖表合理的布局在一張大的版面上,而不是一幅一幅的導出最后在其他軟件中手動拼湊。
這個技能在制作多圖儀表盤場景下,將會特別有用:
還需要強調下這里所指的一頁多圖與我們之前介紹過的分面可是大有不同,分面其實是一幅圖表中,將分類變量所構成的分類圖表分圖呈現,但是本質上所有分面內的單個圖表共享標題、圖例、坐標軸刻度(雖然可以手動定義)。
也就是說分面的圖表類型與諸多元素都是一樣的,但是分面解決不了不同圖表的排版布局問題:比如單獨繪制而成的一幅散點圖、柱形圖和一幅餅圖,分面將無能為力。
R語言中可以實現多圖同頁布局的函數有很多(我所知道的舊有大概四五種),但是有些參數略微復雜不便記憶,這里只跟大家介紹兩種:
一種是grid.layout函數(就是我們昨天所講到的圖表嵌套所用到的是同一個包),另一個是rmisc包中的multiplot函數:
grid.layout函數:
require(ggplot2)
require(grid)
繪制備用圖表(這里必須給圖表命名,因為最后制作匯總圖的時候需要引用圖表名稱)
chart1 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point()
chart2 <- ggplot(diamonds, aes(carat, depth, colour = color)) + geom_point()
chart3<- ggplot(diamonds, aes(carat, depth, colour = color)) + geom_point() + facet_grid(.~color)
以上三個函數定義了三個圖表對象,如果想要查看圖表則只需給出圖表名稱然后回車即可:
grid.newpage() ###新建圖表版面
pushViewport(viewport(layout = grid.layout(2,2))) ####將版面分成2*2矩陣
vplayout <- function(x,y){viewport(layout.pos.row = x, layout.pos.col = y)}
###定義圖表的布局規則,也就是指定畫布的行顯示圖表的X軸,列顯示圖表的Y軸。
print(chart3, vp = vplayout(1,1:2)) ###將(1,1)和(1,2)的位置畫圖chart3
print(chart2, vp = vplayout(2,1)) ###將(2,1)的位置畫圖chart2
print(chart1 , vp = vplayout(2,2)) ###將(2,2)的位置畫圖chart1
以上函數將逐步按照之前的位置規則按照對應順序繪制三幅圖表,每打印一次你都可以看到畫布上增加一個圖表。
以上是該方法制作一頁多圖的全部過程,其實因為里面有自定義函數,看起來稍微有點兒麻煩,不過不影響理解。
multiplot函數:
library("Rmisc")
library("lattice")
library("plyr")
使用multiplot函數制作一頁多圖的語法非常簡單,過程同樣也是先制作出單個圖表并命名,然后一句函數就搞定:
multiplot(chart1,chart2,chart3, cols=2)
雖然使用multiplot函數非常方便高效,但是默認情況下,它不會對單個的圖表長寬比例做最優布局,我們的案例中,chart3是一個水平分面圖,屬于矮款型的,但是multiplot函數將它壓縮成長寬近似的矩形,放在四象限的第二個位置。
整體看上去,第一種方法雖然過程復雜些,但是局部靈活些,可以調整單個圖表所占的空間,第二種方式更加高效、快捷,但是布局上欠缺優化(也許是我還沒有接觸到內部的局部調整參數,有懂的小伙伴兒麻煩指導一下,不勝感激)!
對了,做完圖之后記得使用
dev.off() #
函數關閉活動版面,否則會影響之后的其他不相關圖表!
“R語言可視化圖表排版中的頁多圖介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。