在ggplot2程序包的加持下,R語(yǔ)言可以做出非常漂亮的統(tǒng)計(jì)圖出來(lái)。然而大家是否會(huì)有這樣的體會(huì)醉锄,為了做出理想的圖片,需要不停的調(diào)整作圖的參數(shù)击吱,包括顏色,字體大小遥昧,字體格式,注釋的位置朵纷,非常麻煩炭臭。尤其是與別人進(jìn)行科研合作,圖片的繪制需要不停地進(jìn)行溝通袍辞,甚至需要?jiǎng)佑肞S鞋仍,GIMP等工具。
大家有沒(méi)有想過(guò)可以像下面的動(dòng)圖展示的那樣搅吁,可以對(duì)圖片的任意元素進(jìn)行修改呢威创??谎懦?
本文給大家介紹一種解決方案肚豺,可以將R語(yǔ)言繪制的圖片以元數(shù)據(jù)(點(diǎn),線界拦,面吸申,顏色,形狀等等)的方式保存到PPT文件中,在PPT中進(jìn)行修改截碴。
軟件包
- officer程序包:一個(gè)從R端訪問(wèn)和編輯word和PPT文件的程序包梳侨。
- rvg程序包:一個(gè)為PPT和Excel生成矢量圖的程序包。
兩款程序包日丹,均可以從CRAN進(jìn)行安裝走哺,安裝命名如下:
install.packages(c('officier', 'rvg'))
實(shí)現(xiàn)方法
- R圖格式轉(zhuǎn)換
通過(guò)rvg中的dml
函數(shù)進(jìn)行轉(zhuǎn)換,可以將R生成兩類圖哲虾,Graphics和ggplot圖丙躏,轉(zhuǎn)換成PPT可以直接導(dǎo)入的格式。
- Graphics圖: 首先找一段生成決策曲線的代碼
data(dcaData)
set.seed(123)
baseline.model <- decision_curve(Cancer~Age + Female + Smokes,
data = dcaData,
thresholds = seq(0, .4, by = .005),
bootstraps = 10)
full.model <- decision_curve(Cancer~Age + Female + Smokes + Marker1 + Marker2,
data = dcaData,
thresholds = seq(0, .4, by = .005),
bootstraps = 10)
plot_decision_curve( list(baseline.model, full.model),
curve.names = c("Baseline model", "Full model"),
col = c("blue", "red"),
lty = c(1,2),
lwd = c(3,2, 2, 1),
legend.position = "bottomright")
最后的代碼段是作圖的命令妒牙,我們只需要將最后一段進(jìn)行如下操作彼哼,即將其賦值給dml
函數(shù)的code
參數(shù)。
p.dca <- dml(code = {
plot_decision_curve( list(baseline.model, full.model),
curve.names = c("Baseline model", "Full model"),
col = c("blue", "red"),
lty = c(1,2),
lwd = c(3,2, 2, 1),
legend.position = "bottomright")
})
- ggplot圖:同樣找一段生成頻數(shù)分布對(duì)比柱狀圖的代碼:
ggbarstats(
data = mtcars,
x = vs,
y = cyl
)
對(duì)該作圖代碼做如下修改湘今,將它賦值給dml
函數(shù)中的ggobj
參數(shù):
p.bar <- dml(ggobj = {
ggbarstats(
data = mtcars,
x = vs,
y = cyl
)
})
- 導(dǎo)入PPT
使用officier包將前面生成p.dca
和p.bar
輸出到PPT中敢朱。會(huì)用到以下函數(shù): - 打開PPT--
read_pptx
- 添加頁(yè)面--
add_slide
- 導(dǎo)入圖片--
ph_with
- 保存PPT--
print
具體操作如下:
pptx <- read_pptx()
pptx <- add_slide(pptx)
ph_with(pptx, value = p.dca,
location = ph_location_type(type = 'body'))
pptx <- add_slide(pptx)
ph_with(pptx, value = p.bar,
location = ph_location_fullsize())
print(pptx, 'output.pptx')
作者:小蜜蜂Stats
鏈接:http://www.reibang.com/p/8f2d4a92214c