パワーポイントやエクセルの中で編集可能な図を出力できるパッケージの紹介です。図はRに標準で収録されている「plot」コマンドだけでなく「ggplot2」パッケージの出力に対応しています。本パッケージは「officer」パッケージと組み合わせて使用します。
なお、紹介バージョンではエクセルへの出力はエラーで失敗します。そのため、実行コマンドで参考としてコメントアウトで紹介しています。しかし、パワーポイントへの出力は問題なく、パワーポイント内で図の編集が可能です。
パッケージバージョンは0.3.0。windows11のR version 4.2.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("rvg")
実行コマンド
詳細はコマンド、パッケージのヘルプを確認してください。
・準備
###データ例の作成##### #officerパッケージがなければインストール if(!require("officer", quietly = TRUE)){ install.packages("officer");require("officer") } #ggh4xパッケージがなければインストール if(!require("ggh4x", quietly = TRUE)){ install.packages("ggh4x");require("ggh4x") } #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 50 TestData <- tibble(Group = sample(paste0("Group ", 1:2), n, replace = TRUE), SubGroup = sample(paste0("SubGroup ", 1:3), n, replace = TRUE), Data_X = 1:n, Data_Y = rnorm(n)) ######################################### ###「ggh4x」パッケージを利用して作図##### ######################################### #https://www.karada-good.net/analyticsr/r-753/ #各コマンドのstripオプションに体裁を適応する:strip_themedコマンド TestStrip <- strip_themed( #水平方向の体裁 #listで各ラベルの色を設定可能:fill,color background_x = list(element_rect(fill = "dodgerblue"), element_rect(fill = "green"), element_rect(fill = "white")), text_x = elem_list_text(colour = "black", face = "bold"), #by_layer_xオプション:FALSE:異なる要素を個々に適応 by_layer_x = FALSE, #垂直方向の体裁 background_y = elem_list_rect( fill = c("gold", "red") ), text_y = elem_list_text(angle = c(0, 45)), #by_layer_yオプション:FALSE:異なる要素を個々に適応 by_layer_y = TRUE ) #プロット;BasePlotに保存する Ggh4xPlot <- ggplot(TestData, aes(x = Data_X, y = Data_Y, color = Group)) + geom_point() + theme(axis.line = element_line(colour = "black")) + facet_grid2(rows = vars(Group), cols = vars(SubGroup), scales = "fixed", space = "fixed", axes = "margins", remove_labels = "none", strip = TestStrip) ######################################### ###「ggplot2」パッケージを利用して作図### ######################################### BoxPlot <- ggplot(data = TestData, mapping = aes(x = Group, y = Data_Y, fill = Group)) + geom_boxplot() ########
・「rgv」パッケージでパワーポイントエクセルへ図を出力する
#パッケージの読み込み library("rvg") ######################################### ###パワーポイントに挿入################## ######################################### #グラフの変換:dmlコマンド #ggplot以外の作図コマンドを指定:codeオプション TestPlot <- dml(code = plot(TestData$Data_X, TestData$Data_Y)) #ggplotオブジェクトを指定:ggobj TestGGobj <- dml(ggobj = Ggh4xPlot) ###「officer」パッケージのコマンドで埋め込む #パワーポイントを新規作成:read_pptxコマンド NewPPT <- read_pptx() #スライド追加:add_slideコマンド NewPPT <- add_slide(NewPPT, layout = "Title and Content", master = "Office Theme") #スライドに図を追加:ph_withコマンド NewPPT <- ph_with(NewPPT, value = TestPlot, location = ph_location_left()) NewPPT <- ph_with(NewPPT, value = TestGGobj, location = ph_location_right()) #作業フォルダにパワーポイントを保存 print(NewPPT, target = "NewPPT.pptx") ######## ######################################### ###エクセルに挿入######################## ######################################### ###「officer」パッケージのコマンドで埋め込む #エクセルを新規作成:read_xlsxコマンド #NewXLSX <- read_xlsx() #シートを追加 #NewXLSX <- add_sheet(NewXLSX, label = "てすと") ##「rvg」パッケージ #シートに図を追加:xl_add_vgコマンド; #設定しても"Feuil1"シートが追加されます #ggplot以外の作図コマンドを指定:codeオプション #NewXLSX <- xl_add_vg(NewXLSX, sheet = "てすと", # code = plot(TestData$Data_X, TestData$Data_Y), # width = 5, height = 5, left = 1, top = 2 ) #ggplotオブジェクトを指定:ggobj #NewXLSX <- xl_add_vg(NewXLSX, sheet = "てすと", # code = print(Ggh4xPlot), # width = 5, height = 5, left = 2, top = 2 ) #作業フォルダにエクセルを保存 #print(NewXLSX, target = "NewXLSX.xlsx") ########
出力例
少しでも、あなたの解析が楽になりますように!!