cowplot-組圖

作者:白介素2

cowplot包

cowplot包是ggplot2的簡(jiǎn)單附加組件。它旨在為ggplot2提供一個(gè)出版物就緒的主題血崭,一個(gè)需要最小量的軸標(biāo)簽尺寸独撇,情節(jié)背景等丽涩。它的主要目的是方便制作符合要求的圖片。除了提供修改的繪圖主題外拄显,此包還提供了對(duì)ggplot2繪圖的自定義注釋的功能苟径。事實(shí)證明,提供此功能的最簡(jiǎn)單方法是在ggplot2之上實(shí)現(xiàn)通用繪圖畫(huà)布躬审。因此棘街,使用此軟件包可以獲得非常不尋常的效果。

舉例演示

如果你覺(jué)得ggplot2的默認(rèn)主題并不好看

library(ggplot2)
ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
   geom_point(size = 2.5)

image.png

cowplot調(diào)整

可以注意到灰色背景去除了,其實(shí)還有些細(xì)微尺寸上的細(xì)微差別

library(cowplot)
ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
   geom_point(size = 2.5)

image.png

更重要的是cowplot的默認(rèn)主題與 save_plot 函數(shù)很好的銜接起來(lái)
這樣輸出的pdf文件不需要再增加其它參數(shù)就已經(jīng)很好了
cowplot中使用save_plot函數(shù)承边,而不是ggsave()

library(cowplot)
plot.mpg <-ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5)
# use save_plot() instead of ggsave() when using cowplot
save_plot("mpg.png", plot.mpg,
         base_aspect_ratio = 1.3 # 給legend留出一定的空間
)
plot.mpg 
image.png

增加網(wǎng)格線

cowplot默認(rèn)狀態(tài)下為無(wú)網(wǎng)格線
background_grid()函數(shù)可以增加背景網(wǎng)格線

plot.mpg+background_grid(major = "xy",minor = "none")
image.png

更改主題

theme_set函數(shù)能夠方便的更改主題

theme_set(theme_light())
plot.mpg
image.png

cowplot組圖功能

ggplot2的一個(gè)限制是它不容易為標(biāo)題添加標(biāo)簽和其他注釋遭殉。ggplot2嚴(yán)格地將繪圖面板(軸內(nèi)的部分)與繪圖的其余部分分開(kāi),雖然通巢┲可以直接修改其中一個(gè)险污,但我們不能輕易地更改它們。為了以通用方式解決這個(gè)問(wèn)題翔始,cowplot在ggplot2之上實(shí)現(xiàn)了一個(gè)通用的繪圖層罗心。 在此繪圖層中,您可以在圖形頂部添加任意圖形元素城瞎。
在學(xué)術(shù)繪圖中我們經(jīng)巢趁疲可能需要組合多個(gè)圖的情況

假設(shè)我們要組合這兩個(gè)圖

plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5)
plot.mpg
plot.diamonds <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))
plot.diamonds

image.png

image.png

*plot.grid函數(shù)能夠讓我們方便的組合這兩個(gè)圖
*labels參數(shù)指定編號(hào)
*nrow, ncol參數(shù)指定行列有幾個(gè)圖

plot_grid(plot.mpg, plot.diamonds, labels = c("A", "B"))
image.png

對(duì)齊坐標(biāo)軸設(shè)置

align參數(shù),h表示 horizontally 水平對(duì)齊脖镀, vertically ("v") 垂直對(duì)齊

plot_grid(plot.mpg, plot.diamonds, labels = c("A", "B"),align = "h")
image.png

指定輸出的行列

通常plot_grid會(huì)自動(dòng)合理的輸出飒箭,但也可根據(jù)需要自行指定

plot_grid(plot.mpg, plot.diamonds, labels = c("A", "B"),align="v",nrow = 2)
image.png

save_plot函數(shù)輸出文件

plot_grid能夠很好的配合save_plot函數(shù)輸出文件
假設(shè)我們要輸出一個(gè)2*2的文件,注意除在plot_grid文件中指定行列外蜒灰,save_plot也需要指定

plot2by2 <- plot_grid(plot.mpg, NULL, NULL, plot.diamonds,
                      labels=c("A", "B", "C", "D"), ncol = 2)
save_plot("plot2by2.png", plot2by2,
          ncol = 2, # we're saving a grid plot of 2 columns
          nrow = 2, # and 2 rows
          # each individual subplot should have an aspect ratio of 1.3
          base_aspect_ratio = 1.3
          )
plot2by2
image.png

類的圖形注釋

我們要在之前的圖形上添加圖注
draw_plot_label參數(shù)編號(hào)
draw_label參數(shù):增加文字圖注

ggdraw(plot.mpg) + 
  draw_plot_label("A", size = 14) + 
  draw_label("DRAFT!", angle = 45, size = 80, alpha = .2)

image.png

給之前的圖添加標(biāo)簽

# plot.mpg and plot.diamonds were defined earlier
library(viridis)
ggdraw() +
  draw_plot(plot.diamonds + theme(legend.justification = "bottom"), 0, 0, 1, 1) +
  draw_plot(plot.mpg + scale_color_viridis(discrete = TRUE) + 
              theme(legend.justification = "top"), 0.5, 0.52, 0.5, 0.4) +
  draw_plot_label(c("A", "B"), c(0, 0.5), c(1, 0.92), size = 15)

image.png

除此以外cowplot還有其它更高級(jí)的功能弦蹂,但是可能用的不多,我們不再詳細(xì)介紹

參考源代碼鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末强窖,一起剝皮案震驚了整個(gè)濱河市凸椿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翅溺,老刑警劉巖脑漫,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咙崎,居然都是意外死亡优幸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)褪猛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)网杆,“玉大人,你說(shuō)我怎么就攤上這事√既矗” “怎么了队秩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)追城。 經(jīng)常有香客問(wèn)我刹碾,道長(zhǎng),這世上最難降的妖魔是什么座柱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任迷帜,我火速辦了婚禮,結(jié)果婚禮上色洞,老公的妹妹穿的比我還像新娘戏锹。我一直安慰自己,他們只是感情好火诸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布锦针。 她就那樣靜靜地躺著,像睡著了一般置蜀。 火紅的嫁衣襯著肌膚如雪奈搜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天盯荤,我揣著相機(jī)與錄音馋吗,去河邊找鬼。 笑死秋秤,一個(gè)胖子當(dāng)著我的面吹牛宏粤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灼卢,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绍哎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鞋真?” 一聲冷哼從身側(cè)響起崇堰,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涩咖,沒(méi)想到半個(gè)月后赶袄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抠藕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒋困。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盾似。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出零院,到底是詐尸還是另有隱情溉跃,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布告抄,位于F島的核電站撰茎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏打洼。R本人自食惡果不足惜龄糊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望募疮。 院中可真熱鬧炫惩,春花似錦、人聲如沸阿浓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芭毙。三九已至筋蓖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間退敦,已是汗流浹背粘咖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苛聘,地道東北人涂炎。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像设哗,于是被迫代替她去往敵國(guó)和親唱捣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容