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 )