使用R在Excel表格中创build图表

我正在使用openXLSX包从我的R输出生成excel文件。
我找不到将excel图表添加到excel工作簿的方法。
我看到python有一个创buildExcel文件的模块,它有一个用于添加excel图表的类。
有没有办法与R做到这一点?

这是一个使用包XLConnect的解决scheme。 不过小纸条依赖于你需要预先创build的图表模板,它会生成新的文件,而不是将纸张或图表添加到现有的文件中。

它由两个阶段组成:

  1. 为您想要使用的图表types准备Excel模板。
  2. 每次根据需要使用R的数据更新模板文件。

第一步:根据您需要的图表types,在Excel中准备模板。 您可以将所有模板放在同一个文件(不同的工作表)中,或者放在几个不同的文件中。 准备模板时,请在表格中包含所需的图表types,但不要引用特定单元格,而需要使用“命名范围”。 看例如 。 您也可以使用我创build的示例文件 。 请注意在文件和图表的数据引用(如Sheet1!bar_namesSheet1!values而不是Sheet1!$A$2:$A$4Sheet1!$B$2:$B$4 )中使用命名范围。

Excel中命名范围的附注 命名范围意味着您给图表中要使用的数据赋予名称,然后“告诉图表”使用命名范围,而不是绝对位置。 您可以在“公式”菜单的excel中访问“名称pipe理器”。 我们使用命名范围的原因是XLConnect能够控制命名范围,因此当我们修改命名范围时,图表会dynamic更新。

第二步:使用下面的代码,以适应您的需求。 大多使用自己的数据框并更新createName函数中的引用。

 library(XLConnect) # load library wb1 <- loadWorkbook(filename = "edit_chart_via_R_to_excel.xlsx") new.df <- data.frame(Type = c("Ford", "Hyundai", "BMW", "Other"), Number = c(45, 35, 25, 15)) # sample data writeWorksheet(wb1, data = new.df, sheet = "Sheet1", startRow = 1, startCol = 1, header = TRUE) # update named ranges for the chart's use. # Note that # "Sheet1!$A$2:$A$5" and "Sheet1!$B$2:$B$5" # should change according to the data you are updating createName(wb1, "bar_names", "Sheet1!$A$2:$A$5", overwrite = TRUE) createName(wb1, "values", "Sheet1!$B$2:$B$5", overwrite = TRUE) saveWorkbook(wb1) 

这应该做的伎俩。

请注意,如果要将其作为新文件提供(并保留原始模板而不覆盖它),则可以在开始修改之前复制并保存模板。