Rで解析:WordやPowerPointで編集可能なグラフを出力「mschart」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

WordやPowerPointで編集可能なグラフを出力できるパッケージの紹介です。棒グラフ、折れ線グラフ、散布図、面グラフの作成が可能です。グラフ内での日本語も文字化けせずに利用可能です。

パッケージバージョンは0.3.1。WordやPowerPointはOffice365。実行コマンドはwindows 11のR version 4.1.2で確認しています。

スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("mschart")

実行コマンド

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("mschart")

###データ例の作成#####
n <- 30
TestData <- data.frame("ID" = rep(c("KA", "RA", "DA"), each = 3, length = n),
                          "Group" = rep_len(c("Group1", "Group2", "Group3"), n),
                          "Point" = rep(1:10, length = n),
                          "Value" = rnorm(n))
########

#&#20316;&#25104;&#21487;&#33021;&#12394;4&#31278;&#12398;&#12464;&#12521;&#12501;:ms_XXXX&#12467;&#12510;&#12531;&#12489;
#&#20316;&#25104;&#12375;&#12383;&#12464;&#12521;&#12501;&#12399;print&#12467;&#12510;&#12531;&#12489;,preview = TRUE&#12391;&#34920;&#31034;&#21487;&#33021;
#Group&#20998;&#21106;:group&#12458;&#12503;&#12471;&#12519;&#12531;:NULL&#12391;&#20998;&#21106;&#12394;&#12375;
#&#26834;&#12464;&#12521;&#12501;:ms_barchart&#12467;&#12510;&#12531;&#12489;
TestBar <- ms_barchart(data = TestData, x = "ID", y = "Value", group = "Group")
print(TestBar, preview = TRUE)
#NoGTestBar <- ms_barchart(data = TestData, x = "ID", y = "Value", group = NULL)
#print(NoGTestBar, preview = TRUE)
#&#25240;&#12428;&#32218;&#12464;&#12521;&#12501;:ms_linechart&#12467;&#12510;&#12531;&#12489;
TestLine <- ms_linechart(data = TestData, x = "Point", y = "Value", group = "Group")
print(TestLine, preview = TRUE)
#&#25955;&#24067;&#22259;:ms_scatterchart&#12467;&#12510;&#12531;&#12489;
TestScatter <- ms_scatterchart(data = TestData, x = "Point", y = "Value", group = "Group")
print(TestScatter, preview = TRUE)
#&#38754;&#12464;&#12521;&#12501;:ms_areachart&#12467;&#12510;&#12531;&#12489;
TestAreachart <- ms_areachart(data = TestData, x = "Point", y = "Value", group = "Group")
print(TestAreachart, preview = TRUE)

#&#12464;&#12521;&#12501;&#12398;&#31278;&#39006;&#12434;&#35373;&#23450;:chart_settings&#12467;&#12510;&#12531;&#12489;
#&#31278;&#39006;&#12434;&#35373;&#23450;:grouping&#12458;&#12503;&#12471;&#12519;&#12531;;stacked:&#31309;&#12415;&#19978;&#12370;,percentStacked:100%&#31309;&#12415;&#19978;&#12370;,
#clustered:&#38598;&#21512;;&#26834;&#12464;&#12521;&#12501;&#12392;&#25955;&#24067;&#22259;,standard:&#27161;&#28310;&#12364;&#25351;&#23450;&#21487;&#33021;
#&#12464;&#12521;&#12501;&#12398;&#37325;&#12394;&#12426;&#12434;&#35519;&#25972;:overlap&#12467;&#12510;&#12531;&#12489;;-100&#12363;&#12425;100&#12391;&#25351;&#23450;&#21487;&#33021;
SetTestBar1 <- chart_settings(TestBar, grouping = "stacked", overlap = 50)
print(SetTestBar1, preview = TRUE)

#X,Y&#36600;&#12398;&#26360;&#24335;&#35373;&#23450;:chart_ax_x,chart_ax_y&#12467;&#12510;&#12531;&#12489;
#&#20001;&#12467;&#12510;&#12531;&#12489;&#12458;&#12503;&#12471;&#12519;&#12531;&#12364;&#20849;&#36890;
#&#12521;&#12505;&#12523;&#12398;&#20301;&#32622;&#12434;&#25351;&#23450;:crosses&#12458;&#12503;&#12471;&#12519;&#12531;;min,max,autoZero&#12364;&#25351;&#23450;&#21487;&#33021;
#&#30446;&#30427;,&#35036;&#21161;&#30446;&#30427;&#12398;&#20301;&#32622;&#12434;&#25351;&#23450;:major_tick_mark,minor_tick_mark&#12458;&#12503;&#12471;&#12519;&#12531;
#cross,in,none,out&#12364;&#25351;&#23450;&#21487;&#33021;
#&#12521;&#12505;&#12523;&#12398;&#22238;&#36578;:rotation&#12458;&#12503;&#12471;&#12519;&#12531;;-360&#12363;&#12425;360&#12391;&#25351;&#23450;&#21487;&#33021;
#&#25968;&#20516;&#26360;&#24335;&#35373;&#23450;:num_fmt&#12458;&#12503;&#12471;&#12519;&#12531;
SetTestBar2 <- chart_ax_x(SetTestBar1, crosses = "min", minor_tick_mark = "cross",
                             rotation = -45)
SetTestBar3 <- chart_ax_y(SetTestBar2, crosses = "min", minor_tick_mark = "cross",
                             num_fmt = "0.0", rotation = -45)
print(SetTestBar3, preview = TRUE)

#&#12464;&#12521;&#12501;,X,Y&#36600;&#12398;&#12479;&#12452;&#12488;&#12523;&#12434;&#35373;&#23450;:chart_labels&#12467;&#12510;&#12531;&#12489;
#&#26085;&#26412;&#35486;&#21033;&#29992;&#12418;OK
SetTestBar3$theme$main_title$font.family <- "MS UI Gothic"
SetTestBar3$theme$axis_title_x$font.family <- "MS UI Gothic"
SetTestBar3$theme$axis_title_y$font.family <- "MS UI Gothic"
SetTestBar4 <- chart_labels(SetTestBar3, title = "Title", 
                               xlab = "x title", ylab = "y title")
print(SetTestBar4, preview = TRUE)

#&#22615;&#12426;&#33394;&#12434;&#25351;&#23450;:chart_data_fill&#12467;&#12510;&#12531;&#12489;
#&#33394;&#12434;&#35373;&#23450;:value&#12458;&#12503;&#12471;&#12519;&#12531;;&#21336;&#33394;&#12414;&#12383;&#12399;&#12521;&#12505;&#12523;&#21517;&#12391;&#25351;&#23450;
SetTestBar5 <- chart_data_fill(SetTestBar4,
                                  values = c(Group1 = "#FDE4C0",
                                             Group2 = "#FFF7F3",
                                             Group3 = "red"))
print(SetTestBar5, preview = TRUE)

#&#26528;&#32218;&#33394;&#12434;&#25351;&#23450;:chart_data_stroke&#12467;&#12510;&#12531;&#12489;
#&#12458;&#12503;&#12471;&#12519;&#12531;&#12399;chart_data_fill&#12467;&#12510;&#12531;&#12489;&#12392;&#20849;&#36890;
SetTestBar6 <- chart_data_stroke(SetTestBar5, values = "yellow")
print(SetTestBar6, preview = TRUE)

#&#21442;&#32771;:Word&#12414;&#12383;&#12399;PowerPoint&#12395;&#22475;&#12417;&#36796;&#12415;&#20445;&#23384;&#12377;&#12427;&#26041;&#27861;
#install.packages("officer")
library("officer")
#Word:body_add_chart&#12467;&#12510;&#12531;&#12489;
doc <- read_docx()
doc <- body_add_chart(doc, chart = SetTestBar6, style = "centered")
print(doc, target = "Test.docx")
#PowerPoint:ph_with_chart&#12467;&#12510;&#12531;&#12489;
doc <- read_pptx()
doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- ph_with_chart(doc, chart = SetTestBar6)
print(doc, target = "Test.pptx")

出力例

・グラフを作成:ms_XXXXコマンド

・ms_barchartコマンドに全体裁コマンドを適応
『SetTestBar6』を出力

・参考:Wordへ出力後に編集


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました