R語(yǔ)言與醫(yī)學(xué)統(tǒng)計(jì)圖形-【27】ggplot2圖形組合、字體、保存

ggplot2繪圖系統(tǒng)——圖形組合、字體選擇、保存輸出

1.圖形組合

一頁(yè)多圖在基礎(chǔ)包中利用par和layout函數(shù)來(lái)切分畫(huà)布。

ggplot2是先鋪好網(wǎng)格背景,再進(jìn)行繪圖,所以要通過(guò)切分網(wǎng)格背景來(lái)實(shí)現(xiàn)一頁(yè)多圖。

gridExtra包(grid擴(kuò)展包)可用于圖形排列組合、表格對(duì)象排列組合、規(guī)則多邊形及橢圓的排列組合。

library(grid)
#在畫(huà)布上畫(huà)8圖(列表)
gs <- lapply(1:8, function(i)grobTree(rectGrob(gp=gpar(fill=i,alpha=0.5)),textGrob(i)))
#按一定順序均分畫(huà)布
grid.arrange(grobs=gs,
             ncol=4,
             top='top label',
             bottom='bottom\nlabel',
             left='left label',
             right='right label')

#自由切分畫(huà)布(layout_matrix參數(shù))
layout <- rbind(c(1,1,1,2,3),
                c(1,1,1,4,5),
                c(6,7,7,8,8))
grid.arrange(grobs=gs,layout_matrix=layout) #按矩陣切分
image.png
#使用長(zhǎng)寬比來(lái)排列組合
grid.arrange(grobs=gs[1:3],ncol=2,widths=1:2,#定義寬度比
             heights=unit(c(1,10),c('in','mm')),#定義高度(絕對(duì)值)
             top='arrange with proportion')
image.png

2. 圖形字體選擇及中文繪制

針對(duì)windows系統(tǒng)的字體(windows/Fonts路徑下),windowsFont和windowsFonts函數(shù)。

#從windows字體庫(kù)中提取字體并命名
windowsFonts(font1=windowsFont('Book Antiqua'),
             font2=windowsFont('Cambria'),
             font3=windowsFont('華文中宋'),
             font4=windowsFont('楷體'))
plot(1:10)
text(1.5,2,labels = 'Hello',family='font1',cex=2)
text(3,4,labels = 'World',family='font2',cex=2)
text(5,6,labels = '你好',family='font3',cex=2)
text(8,9,labels = '世界',family='font4',cex=2)

#很多英文字體對(duì)中文不起作用
image.png

ggplot2繪圖系統(tǒng)一樣。

MAC系統(tǒng)

#顯示中文
Sys.setlocale(category = 'LC CTYPE',locale = 'zh_CN.UTF-8')

#字體選擇
plot(1:10)
text(1.5,2,labels = 'Hello',family='Times New Roman',cex=2)
text(5,6,labels = '你好',family='楷體',cex=2)

中文不顯示問(wèn)題:
如果在Rstudio中字體編碼改成UTF-8后,繪制的圖形的中文還是被方框替代,則在theme函數(shù)中設(shè)置中文字體即可。

ggplot(mtcars,aes(wt,mpg))+
  geom_point(color='red')+
  ggtitle('這是一幅含有中文的散點(diǎn)圖')+
  theme(plot.title = element_text(size = 18,
                                  family = 'STKaiti')) #或楷體

3. 圖形保存和輸出

雜志一般要求:
位圖分辨率不少于300dpi,或矢量圖(pdf/eps)或tiff格式。
tiff函數(shù)及參數(shù):

tiff(
  filename = 'test.tiff',
  width = 480,
  height = 480,
  units = 'px', #可改為cm
  pointsize = 12,
  compression = , #圖片壓縮形式,一般不設(shè)
  bg='white',
  res = , #分辨率,ppi
  type = c('cairo','windows') #圖形導(dǎo)出類型
)

示例。

tiff('/my/path/plot.tiff',
     width = 1200,
     height = 1300.
     res=300)
ggplot(mtcars,aes(mpg,y=wt,color=factor(gear)))+
  geom_point()
dev.off() #關(guān)閉作圖窗口

ggsave函數(shù)

ggplot(mtcars,aes(mpg,wt))+geom_point()
ggsave('test.pdf')
#dpi默認(rèn)300,無(wú)需dev.off關(guān)閉繪圖框

Cairo擴(kuò)展包
流行的開(kāi)源2D圖形渲染引擎,支持各種輸出設(shè)備。輸出高清圖片將圖片放大也不失真。

Cairo和基礎(chǔ)包grDevices中的函數(shù)對(duì)應(yīng)。

  • CairoPNG---grDevices:png()。
  • CairoTIFF---grDevices:tiff()。
  • CairoPDF---grDevices:pdf()。

加載包后,ggsave默認(rèn)以Cairo處理圖片。

library(Cairo)
Cairo.capabilities() #支持的圖片格式

p = ggplot(iris,aes(x = Species,y = Sepal.Length,colour = Species))
plot1 = p+geom_point()
#ggsave默認(rèn)以Cairo處理圖片
ggsave("test1.png",plot1,width = 4,height = 3 )
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容