我在 R 中有一個資料框:
library(tidyverse)
a = rnorm(10)
b = runif(10)
var = c(rep("chair",5),rep("table",5) )
d = tibble(a,b,var);d
和一個圖表:
p2 = ggplot(data = d, aes(x=var, y=a))
geom_boxplot(aes(fill=a),outlier.shape=NA)
facet_wrap( ~ var, scales="free")
ggtitle("boxs") ;p2
現在我想將 xlsx 檔案中的資料框匯出到一張紙和同一張紙或另一張紙中,以使用 R 中的 writexl 包匯出 ggplot 圖。
對于資料框,tasj 很容易實作:
writexl::write_xlsx(list(d),
path = paste("path\\name_file.xlsx"))
但我不知道在 writexl 包下這可以為圖表完成。
有什么幫助嗎?
uj5u.com熱心網友回復:
TBMK 這是不可能的writexl。但是使用這個openxlsx包,你可以通過openxlsx::insertPlot. 一句話:insertPlot將匯出當前(列印的)圖。這就是為什么我添加了print(p2):
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "Data")
addWorksheet(wb, "Plot")
writeData(wb, "Data", d)
print(p2)
insertPlot(wb, "Plot")
saveWorkbook(wb, "plot.xlsx", overwrite = TRUE)

更新如果您想匯出多個資料集和繪圖,您可以將代碼放在函式中并使用回圈:
注意:為簡單起見,我復制了您的資料和繪圖。
dlist <- list(d, d)
plist <- list(p2, p2)
library(openxlsx)
wb <- createWorkbook()
export_xl <- function(i) {
data_sheet <- paste("Data", i)
plot_sheet <- paste("Plot", i)
addWorksheet(wb, data_sheet)
addWorksheet(wb, plot_sheet)
writeData(wb, data_sheet, dlist[[i]])
print(plist[[i]])
insertPlot(wb, plot_sheet)
}
for (i in seq(2)) {
export_xl(i)
}
saveWorkbook(wb, "plot.xlsx", overwrite = TRUE)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530307.html
標籤:r擅长ggplot2
