R包export
可以輕松的將R繪制的圖和統(tǒng)計(jì)表輸出到 Microsoft Office (Word、PowerPoint和Excel)株茶、HTML和Latex中来涨,其質(zhì)量可以直接用于發(fā)表。
你和PPT高手之間启盛,就只差一個(gè)iSlide
Excel改變了你的基因名蹦掐,30% 相關(guān)Nature文章受影響技羔,NCBI也受波及
特點(diǎn)
可以用命令將交互式R圖或
ggplot2
Lattice
或base R
圖保存到Microsoft Word卧抗、Powerpoint或其他各種位圖或矢量格式堕阔。完全可編輯的Powerpoint矢量格式輸出,支持手動(dòng)整理繪圖布局颗味。
將
統(tǒng)計(jì)分析
的輸出保存為Excel、Word牺弹、PowerPoint浦马、Latex或HTML文檔的表格形式。自定義R輸出格式张漂。
安裝
export
包可以在Windows晶默、Ubuntu和Mac上跨平臺(tái)運(yùn)行。不過(guò)有些Mac發(fā)行版默認(rèn)情況下沒(méi)有安裝cairo設(shè)備航攒,需要自行安裝磺陡。如果Mac用戶已安裝XQuartz,這個(gè)問(wèn)題就解決了漠畜,它可以從https://www.xquartz.org/免費(fèi)獲得币他。
官方CRAN發(fā)布 (以不能用)
install.packages("export")
從 Github 安裝 (推薦
install.packages("officer")
install.packages("rvg")
install.packages("openxlsx")
install.packages("ggplot2")
install.packages("flextable")
install.packages("xtable")
install.packages("rgl")
install.packages("stargazer")
install.packages("tikzDevice")
install.packages("xml2")
install.packages("broom")
install.packages("devtools")
devtools::install_github("tomwenseleers/export")
該包主要包括以下幾種轉(zhuǎn)換
graph2bitmap
graph2office
graph2vector
rgl2bitmap 轉(zhuǎn)換3D圖
table2office
table2spreadsheet
table2tex
graph2bitmap
: 將當(dāng)前R圖保存到bmp文件中
graph2png
: 將當(dāng)前R圖保存到png文件中
graph2tif
: 將當(dāng)前R圖保存到TIF文件中
graph2jpg
: 將當(dāng)前R圖保存為JPEG文件
使用幫助信息如下:
graph2bitmap(x = NULL, file = "Rplot", fun = NULL, type = c("PNG","JPG", "TIF"),
aspectr = NULL, width = NULL, height = NULL, dpi = 300,scaling = 100,
font =ifelse(Sys.info()["sysname"] == "Windows", "Arial",
"Helvetica")[[1]], bg = "white", cairo = TRUE,
tiffcompression = c("lzw", "rle", "jpeg", "zip", "lzw+p", "zip+p"),
jpegquality = 99, ...)
aspectr
: 期望縱橫比。如果設(shè)置為空憔狞,則使用圖形設(shè)備的縱橫比蝴悉。
width
: 所需寬度(英寸);可以與期望的縱橫比aspectr組合。
height
: 所需高度(英寸);可以與期望的縱橫比aspectr組合瘾敢。
scaling
: 按一定比例縮放寬度和高度拍冠。
font
: PNG和TIFF輸出中標(biāo)簽所需的字體; Windows系統(tǒng)默認(rèn)為Arial,其他系統(tǒng)默認(rèn)為Helvetica簇抵。
bg
: 所需的背景顏色庆杜,例如“白色”或“透明”。
cairo
: 邏輯碟摆,指定是否使用Cairographics導(dǎo)出晃财。
tiffcompression
: 用于TIF文件的壓縮。
jpegquality
: JPEG壓縮的質(zhì)量典蜕。
準(zhǔn)備開(kāi)始
安裝完?export
包后拓劝,先調(diào)用該包
library(export)
用ggplot2
繪圖
library(ggplot2)
library(datasets)
x=qplot(Sepal.Length, Petal.Length, data = iris,
color = Species, size = Petal.Width, alpha = I(0.7))
qplot()
的意思是快速作圖,利用它可以很方便的創(chuàng)建各種復(fù)雜的圖形嘉裤,其他系統(tǒng)需要好幾行代碼才能解決的問(wèn)題郑临,用qplot
只需要一行就能完成。
使用半透明的顏色可以有效減少圖形元素重疊的現(xiàn)象屑宠,要?jiǎng)?chuàng)建半透明的顏色厢洞,可以使用alpha
圖形屬性,其值從0
(完全透明)到1
(完全不透明)。更多ggplot2
繪圖見(jiàn)
ggplot2高效實(shí)用指南 (可視化腳本躺翻、工具丧叽、套路、配色)
?(往期教程更有很多
生物信息
相關(guān)的例子)公你。
鳶尾花(iris
)是數(shù)據(jù)挖掘常用到的一個(gè)數(shù)據(jù)集踊淳,包含150個(gè)鳶尾花的信息,每50個(gè)取自三個(gè)鳶尾花種之一(setosa
,versicolour
或virginica
)陕靠。每個(gè)花的特征用下面的5種屬性描述萼片長(zhǎng)度(Sepal.Length
)迂尝、萼片寬度(Sepal.Width
)、花瓣長(zhǎng)度(Petal.Length
)剪芥、花瓣寬度(Petal.Width
)垄开、類(lèi)(Species
)。
在console里展示數(shù)據(jù)圖 (長(zhǎng)寬比自己調(diào)節(jié)):
導(dǎo)出圖形對(duì)象
# 需運(yùn)行上面的ggplot2繪圖
# Create a file name
# 程序會(huì)自動(dòng)加后綴
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2bitmap():
### 1. Pass the plot as an object
graph2png(x=x, file=filen, dpi=400, height = 5, aspectr=4)
graph2tif(x=x, file=filen, dpi=400, height = 5, aspectr=4)
graph2jpg(x=x, file=filen, dpi=400, height = 5, aspectr=4)
導(dǎo)出當(dāng)前繪圖窗口展示的圖
### 2. Get the plot from current screen device
# 注意這個(gè)x税肪,是運(yùn)行命令溉躲,展示圖像
x
graph2png(file=filen, dpi=400, height = 5, aspectr=4)
graph2tif(file=filen, dpi=400, height = 5, aspectr=4)
graph2jpg(file=filen, dpi=400, height = 5, aspectr=4)
導(dǎo)出自定義函數(shù)輸出的一組圖
### 3. Pass the plot as a functio
plot.fun <- function(){
print(qplot(Sepal.Length, Petal.Length, data = iris,
color = Species, size = Petal.Width, alpha = 0.7))
}
graph2png(file=filen, fun=plot.fun, dpi=400, height = 5, aspectr=4)
graph2tif(file=filen, fun=plot.fun, dpi=400, height = 5, aspectr=4)
graph2jpg(file=filen, fun=plot.fun, dpi=400, height = 5, aspectr=4)
轉(zhuǎn)換后的圖形:
與Office系列的交互
大部分圖的細(xì)節(jié)修改都是用代碼完成的,不需要后續(xù)的修飾益兄;但如果某一些修改比較特異锻梳,不具有程序的通用性特征,或?qū)崿F(xiàn)起來(lái)比較困難净捅,就可以考慮后期修改唱蒸。比如用AI
文章用圖的修改和排版
。熟悉PPT的灸叼,也可以用PPT神汹,這時(shí)R的圖導(dǎo)出PPT,就要用到
graph2office
系列函數(shù)了古今。
graph2ppt
: 將當(dāng)前R圖保存到Microsoft Office PowerPoint/LibreOffice Impress演示文稿中屁魏。
graph2doc
:將當(dāng)前的R圖保存到Microsoft Office Word/LibreOffice Writer文檔中。
函數(shù)參數(shù)展示和解釋
graph2office(x = NULL, file = "Rplot", fun = NULL, type = c("PPT", "DOC"),
append = FALSE, aspectr = NULL, width = NULL, height = NULL,scaling = 100,
paper = "auto", orient = ifelse(type[1] == "PPT","landscape", "auto"),
margins = c(top = 0.5, right = 0.5, bottom = 0.5, left= 0.5),
center = TRUE, offx = 1, offy = 1, upscale = FALSE, vector.graphic = TRUE, ...)
margins
: 預(yù)設(shè)留白邊距向量捉腥。
paper
: 紙張尺寸——“A5”至“A1”用于Powerpoint導(dǎo)出氓拼,或“A5”至“A3”用于Word輸出;默認(rèn)“auto”自動(dòng)選擇適合您的圖形的紙張大小。如果圖太大抵碟,無(wú)法在給定的紙張大小上顯示桃漾,則按比例縮小。
orient
: 所需的紙張方向-“自動(dòng)”拟逮,“縱向”或“橫向”; Word輸出默認(rèn)為“自動(dòng)”撬统,Powerpoint默認(rèn)為“橫向”。
vector.graphic
: 指定是否以可編輯的向量DrawingML格式輸出敦迄。默認(rèn)值為T(mén)RUE恋追,在這種情況下凭迹,編輯Powerpoint或Word中的圖形時(shí),可以先對(duì)圖形元素進(jìn)行分組苦囱。如果設(shè)置為FALSE嗅绸,則將該圖以300 dpi的分辨率柵格化為PNG位圖格式。(柵(shān)格化,是PS中的一個(gè)專(zhuān)業(yè)術(shù)語(yǔ),柵格即像素,柵格化即將矢量圖形轉(zhuǎn)化為位圖撕彤。)
同樣有3種導(dǎo)出方式
# 需運(yùn)行上面的ggplot2繪圖
# Create a file name
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2office():
### 1. Pass the plot as an object
# 導(dǎo)出圖形對(duì)象
graph2ppt(x=x, file=filen)
graph2doc(x=x, file=filen, aspectr=0.5)
### 2. Get the plot from current screen device
# 導(dǎo)出當(dāng)前預(yù)覽窗口呈現(xiàn)的圖
x
graph2ppt(file=filen, width=9, aspectr=2, append = TRUE)
graph2doc(file=filen, aspectr=1.7, append =TRUE)
### 3. Pass the plot as a function
# 導(dǎo)出自定義函數(shù)輸出的一系列圖
graph2ppt(fun=plot.fun, file=filen, aspectr=0.5, append = TRUE)
graph2doc(fun=plot.fun, file=filen, aspectr=0.5, append = TRUE)
導(dǎo)出到office(ppt和word)中的圖形鱼鸠,是可編輯的:
其它導(dǎo)出到ppt的例子(設(shè)置長(zhǎng)寬比)
graph2ppt(file="ggplot2_plot.pptx", aspectr=1.7)
增加第二張同樣的圖,9英寸寬和A4長(zhǎng)寬比的幻燈片 (append=T羹铅,追加)
graph2ppt(file="ggplot2_plot.pptx", width=9, aspectr=sqrt(2), append=TRUE)
添加相同圖形的第三張幻燈片蚀狰,寬度和高度固定
graph2ppt(file="ggplot2_plot.pptx", width=6, height=5, append=TRUE)
禁用矢量化圖像導(dǎo)出
graph2ppt(x=x, file=filen, vector.graphic=FALSE, width=9, aspectr=sqrt(2), append = TRUE)
用圖填滿幻燈片
graph2ppt(x=x, file=filen, margins=0, upscale=TRUE, append=TRUE)
輸出矢量圖
graph2svg
: 將當(dāng)前的R圖保存為SVG格式
graph2pdf
: 將當(dāng)前的R圖保存為PDF格式
graph2eps
: 將當(dāng)前的R圖保存為EPS格式
函數(shù)參數(shù)解釋
graph2vector(x = NULL, file = "Rplot", fun = NULL, type = "SVG",aspectr = NULL,
width = NULL, height = NULL, scaling = 100,
font = ifelse(Sys.info()["sysname"] == "Windows",
"Arial","Helvetica")[[1]], bg = "white", colormodel = "rgb",
cairo = TRUE,fallback_resolution = 600, ...)
fallback_resolution
: dpi中的分辨率用于柵格化不支持的矢量圖形。
#需運(yùn)行上面的ggplot2繪圖
# Create a file name
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2vector():
### 1. Pass the plot as an object
# 導(dǎo)出圖形對(duì)象
graph2svg(x=x, file=filen, aspectr=2, font = "Times New Roman",
height = 5, bg = "white")
graph2pdf(x=x, file=filen, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
graph2eps(x=x, file=filen, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
# 導(dǎo)出當(dāng)前預(yù)覽窗口呈現(xiàn)的圖
### 2. Get the plot from current screen device
x
graph2svg(file=filen, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
graph2pdf(file=filen, aspectr=2, font = "Times New Roman",
height = 5, bg = "white")
graph2eps(file=filen, aspectr=2, font = "Times New Roman",
height = 5, bg = "white")
# 導(dǎo)出自定義函數(shù)輸出的一系列圖
### 3. Pass the plot as a function
graph2svg(file=filen, fun = plot.fun, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
graph2pdf(file=filen, fun=plot.fun, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
graph2eps(file=filen, fun=plot.fun, aspectr=2, font = "Arial",
height = 5, bg = "transparent")
轉(zhuǎn)換3D圖形
rgl2png
: 將當(dāng)前的rgl 3D圖形保存為PNG格式睦裳。
rgl2bitmap(file = "Rplot", type = c("PNG"))
# Create a file name
filen <- tempfile("rgl") # or
# filen <- paste("YOUR_DIR/rgl")
# Generate a 3D plot using 'rgl'
x = y = seq(-10, 10, length = 20)
z = outer(x, y, function(x, y) x^2 + y^2)
rgl::persp3d(x, y, z, col = 'lightblue')
# Save the plot as a png
rgl2png(file = filen)
# Note that omitting 'file' will save in current directory
生成的3D圖形:
將生成的3D圖形保存為PNG格式:
輸出統(tǒng)計(jì)結(jié)果到表格?table2spreadsheet
table2excel
: 導(dǎo)出統(tǒng)計(jì)輸出到Microsoft Office Excel/ LibreOffice Calc電子表格中的一個(gè)表.
table2csv
:將統(tǒng)計(jì)輸出以CSV格式導(dǎo)出到表中(“,”表示值分隔撼唾,“廉邑。”表示小數(shù))
table2csv2
: 將統(tǒng)計(jì)輸出以CSV格式導(dǎo)出到表中(“;”表示值分隔倒谷,”蛛蒙,”表示小數(shù))
table2spreadsheet(x = NULL, file = "Rtable", type = c("XLS", "CSV",
"CSV2"), append = FALSE, sheetName = "new sheet", digits = 2,
digitspvals = 2, trim.pval = TRUE, add.rownames = FALSE, ...)
sheetName
: 一個(gè)字符串,給出創(chuàng)建的新工作表的名稱(chēng)(僅針對(duì)type==”XLS”)渤愁。它必須是惟一的(不區(qū)分大小寫(xiě))牵祟,不受文件中任何現(xiàn)有工作表名稱(chēng)的影響。
digits
:除具有p值的列外抖格,要顯示所有列的有效位數(shù)的數(shù)目诺苹。
digitspvals
:具有p值的列要顯示的有效位數(shù)的數(shù)目。
# Create a file name
filen <- "table_aov" # or
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data = npk) # 'npk' dataset from base 'datasets'
x=summary(fit)
# Save ANOVA table as a CSV
### Option 1: pass output as object
# 輸出對(duì)象
table2csv(x=x,file=filen, digits = 1, digitspvals = 3, add.rownames=TRUE)
# 屏幕輸出導(dǎo)出到文件
### Option 2: get output from console
summary(fit)
table2csv(file=filen, digits = 2, digitspvals = 4, add.rownames=TRUE)
# Save ANOVA table as an Excel
# Without formatting of the worksheet
x
table2excel(file=filen, sheetName="aov_noformatting", digits = 1, digitspvals = 3, add.rownames=TRUE)
# 更多參數(shù)
# With formatting of the worksheet
table2excel(x=x,file=filen, sheetName="aov_formated", append = TRUE, add.rownames=TRUE, fontName="Arial", fontSize = 14, fontColour = rgb(0.15,0.3,0.75), border=c("top", "bottom"), fgFill = rgb(0.9,0.9,0.9), halign = "center", valign = "center", textDecoration="italic")
原始數(shù)據(jù)的表格:
轉(zhuǎn)換格式之后的雹拄,在console中的數(shù)據(jù):
文件(csv和excel)中表格數(shù)據(jù):
導(dǎo)出為Word中的表收奔,再也不用復(fù)制粘貼調(diào)格式了?table2office
table2ppt
: 導(dǎo)出統(tǒng)計(jì)輸出到Microsoft Office PowerPoint/ LibreOffice Impress演示文稿中的表
table2doc
: 將統(tǒng)計(jì)輸出導(dǎo)出到Microsoft Office Word/ LibreOffice Writer文檔中的表
table2office(x = NULL, file = "Rtable", type = c("PPT", "DOC"),
append = FALSE, digits = 2, digitspvals = 2, trim.pval = TRUE,
width = NULL, height = NULL, offx = 1, offy = 1,
font = ifelse(Sys.info()["sysname"] == "Windows", "Arial",
"Helvetica")[[1]], pointsize = 12, add.rownames = FALSE)
# Create a file name
filen <- "table_aov"
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data = npk) # 'npk' dataset from base 'datasets'
# Save ANOVA table as a PPT
### Option 1: pass output as object
x=summary(fit)
table2ppt(x=x,file=filen, digits = 1, digitspvals = 3, add.rownames =TRUE)
### Option 2: get output from console
summary(fit)
table2ppt(x=x,file=filen, width=5, font="Times New Roman", pointsize=14, digits=4, digitspvals=1, append=TRUE, add.rownames =TRUE) # append table to previous slide
# Save ANOVA table as a DOC file
table2doc(x=x,file=filen, digits = 1, digitspvals = 3, add.rownames =TRUE)
summary(fit)
table2doc(file=filen, width=3.5, font="Times New Roman", pointsize=14, digits=4, digitspvals=1, append=TRUE, add.rownames =TRUE) # append table at end of document
將表格數(shù)據(jù)導(dǎo)出到ppt和word中:
table2tex
table2html
: 導(dǎo)出統(tǒng)計(jì)輸出到HTML表。
table2tex(x = NULL, file = "Rtable", type = "TEX", digits = 2,
digitspvals = 2, trim.pval = TRUE, summary = FALSE, standAlone = TRUE,
add.rownames = FALSE, ...)
summary
:是否匯總數(shù)據(jù)文件滓玖。
standAlone
:導(dǎo)出的Latex代碼應(yīng)該是獨(dú)立可編譯的坪哄,還是應(yīng)該粘貼到另一個(gè)文檔中。
add.rownames
:是否應(yīng)該將行名添加到表中(在第一列之前插入一列)势篡。
# Create a file name
filen <- tempfile(pattern = "table_aov") # or
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data = npk) # 'npk' dataset from base 'datasets'
x=summary(fit)
# Export to Latex in standAlone format
table2tex(x=x,file=filen,add.rownames = TRUE)
# Export to Latex to paste in tex document
summary(fit) # get output from the console
table2tex(file=filen, standAlone = FALSE,add.rownames = TRUE)
# Export to HTML
table2html(x=x,file=filen) # or
summary(fit) # get output from the console
table2html(file=filen,add.rownames = TRUE)
導(dǎo)出到html或tex中的表格數(shù)據(jù):