Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

How to generate PowerPoint slides Non-manually using R

806 Aufrufe

Veröffentlicht am

Introduction to:
- Basic idea and procedure of {officer} package
- Getting started: Embedding texts, tables and figures in slides
- PowerPoint Structure: Layouts and Placeholders
- Making a template for specific layouts
- Making a template for your own slide-layouts

Resources are avail at: https://github.com/katokohaku/powerpoint_with_officer

Veröffentlicht in: Daten & Analysen
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

How to generate PowerPoint slides Non-manually using R

  1. 1. Generating PowerPoint slides Non-manually using R Rでパワーポイントのスライドを手作業せずにつくりたい 第84回 R勉強会@オンライン(#TokyoR)
  2. 2. ?誰 臨床検査事業 の なかのひと ?専門 遊牧@モンゴル(生態学/環境科学) ▼ 臨床検査事業の研究所(データを縦にしたり横にしたりするしごと) 1cm @kato_kohaku
  3. 3. 「パワポでくれ」と言われたら 分析結果→レポーティングの風景像  分析後にパワポを作りなおすの面倒…  自動化したい  報告のプレゼンしないと…  スライド準備しないと… ×100
  4. 4. コピペ汚染 高橋康介『R Markdownで楽々レポートづくり』 gihyo.jp 2015年5月8日 http://gihyo.jp/admin/serial/01/r-markdown/0001?page=2 • 過誤 • コピペすべきデータや場所を間違えてしまう • 不毛 • 大量の図・表・出力があった場合,コピペが大変。 • データやログの差し替えがあった場合,同じコピペを一から繰り返す必要がある • 迷子 • あのデータ、どこにいった? • どのスクリプトを使ったっけ? • たとえば「この図の出力に使った解析アルゴリズムを教えて欲しい」と言われても,レポートからスクリプトはト レースできません。
  5. 5. RによるPowerPoint資料の自動生成 1. RmarkdownをRstudioでknit • ひととおりのプレゼンスライド生成と、ある程度のカスタマイズは可能 • スライド生成が簡単にできる 2. {export} package • Rの図表オブジェクトを、パーツとしてスライドに出力する • PPT以外の出力も含めて操作が簡単なかわり、自由度はあまりない • CRAN凍結中 3. {officer} package • かなり自由にプレゼンスライド生成の生成と編集が可能 「パワポでくれ」と言われたら
  6. 6. To Get ALL Resources Please see my GitHub repos.: • https://github.com/katokohaku/powerpoint_with_officer • このスライドも自動生成できたらよかった…
  7. 7. Rmarkdown を Rstudio で knit (1) ① File → New File → R Markdown ② Presentation → ☑ PowerPoint ③ Knit▼ → Knit to PowerPoint パワポを作りたい① ① ②
  8. 8. Rmarkdown を Rstudio で knit (2) ③ Knit▼ → Knit to PowerPoint パワポを作りたい① ③
  9. 9. Rmarkdown を Rstudio で knit (3) パワポを作りたい① • デフォルトのテンプレートが割とよく出来ているので、これを修正するだけでも結構何とかなる。
  10. 10. {export} package • 図表オブジェクトを、様々なファイル形式で出力してくれる(だった) • {officer}のアップデートに対応してないためCRAN凍結中。 • 上記の理由で旧バージョンを入れても動作しない。 パワポを作りたい②
  11. 11. 1. 基本的な考え方と手順 2. つかってみる:テキスト・図表のスライドへの埋め込み 3. PowerPointの構造 ~ レイアウトとプレースホルダ 4. レイアウトにあわせたテンプレートの作成 5. 自分で作ったスライド用のテンプレートを作る 本日の話題 {officer} packageを使った 柔軟なスライド生成
  12. 12. パッケージ構成 {officer} packageを使ったPowerPointの生成
  13. 13. パッケージ構成 {officer} packageを使ったPowerPointの生成 プレゼンテーションの作成 スライドに設置できる コンテンツの種類 コンテンツの 設置先の指定 操作中のスライドの 構成情報の取得 スライド・プレースホルダの 操作
  14. 14. PowerPointの構造 スライドマスター • すべてのレイアウトのスライドに、共通した設定を行う仕組み レイアウト • スライド上のプレースホルダを様々なパターンで配置した集合 • 各スライド上の、プレースホルダの配置や書式に一貫性を保証するための 仕組み プレースホルダ • スライドレイアウト上に配置されている、コンテンツを配置するための枠 PowerPointの用語
  15. 15. PowerPointの構造 PowerPointの用語 スライドマスター1 レイアウトA レイアウトB プレースホルダ① プレースホルダ② 表示 → スライドマスター 、から確認 プレースホルダ① プレースホルダ②
  16. 16. 参考図書 https://gihyo.jp/book/2017/978-4-7741-9183-6  Chapter6 レイアウトのセオリー
  17. 17. 基本手順 {officer} packageを使ったPowerPointの生成 プレゼンレーションの初期化 read_pptx() スライドの追加 add_slide() コンテンツの設置 ph_with() コンテンツの設置先の指定 ph_location** プレゼンレーションの出力 print(..., target = “XX.pptx) 必須の操作 スライドの作成・編集 設置するコンテンツの指定 図表・テキスト等のオブジェクト 基本的には、 追加したスライド上で プレースホルダにコンテンツを設置 の繰り返し
  18. 18. 基本操作 {officer} packageを使う
  19. 19. 基本操作 {officer} packageを使う
  20. 20. 基本操作:Pipe-chain friendly {officer} packageを使う
  21. 21. (参考) 既存のテーマをつかう 初期化ファイルの指定 {officer} packageを使う
  22. 22. 1. 基本的な考え方と手順 2. つかってみる:テキスト・図表のスライドへの埋め込み 3. PowerPointの構造 ~ レイアウトとプレースホルダ 4. レイアウトにあわせたテンプレートの作成 5. 自分で作ったスライド用のテンプレートを作る 本日の話題 {officer} packageを使った 柔軟なスライド生成
  23. 23. いろいろなコンテンツの設置 • スライド %>% ph_with(オブジェクト, 場所の指定) が基本操作 • 様々なオブジェクトを埋め込める • テキストやベクトル • data.frame • flextable • 画像ファイル • ggplot • editable graphics • 書式のカスタマイズ
  24. 24. テキスト や ベクトル • スライド %>% ph_with(オブジェクト, プレースホルダの指定) が基本操作 いろいろなコンテンツの設置 value location
  25. 25. テキスト や ベクトル • スライド %>% ph_with(オブジェクト, プレースホルダの指定) が基本操作 いろいろなコンテンツの設置 value location
  26. 26. data.frame いろいろなコンテンツの設置
  27. 27. flextable いろいろなコンテンツの設置
  28. 28. 画像ファイル いろいろなコンテンツの設置
  29. 29. ggplot いろいろなコンテンツの設置
  30. 30. ggplot いろいろなコンテンツの設置
  31. 31. ggplot • スライド全体に拡大もできる いろいろなコンテンツの設置
  32. 32. editable graphics • ggplotオブジェクト + rvg::dml() で、編集可能なオブジェクトが埋め込める • R Graphics Devices for Vector Graphics Output for DrawingML plotting in Powerpoint • 生成したXMLのレンダリングに ph_with() を必要とするため、実質的にofficerの専属パッケージ いろいろなコンテンツの設置
  33. 33. editable graphics • ggplotオブジェクト + rvg::dml() で、編集可能なオブジェクトが埋め込める • R Graphics Devices for Vector Graphics Output for DrawingML plotting in Powerpoint • 生成したXMLのレンダリングに ph_with() を必要とするため、実質的にofficerの専属パッケージ いろいろなコンテンツの設置 グループ化 を解除
  34. 34. 段落・書式のカスタマイズ いろいろなコンテンツの設置
  35. 35. いろいろな組み合わせ • プレースホルダのカスタマイズによって、スライド上に任意のレイアウトを作成できる →この資料の後半で解説 • ファイルとして保存して読み込むことで、テンプレートとしても使用できる
  36. 36. 1. 基本的な考え方と手順 2. つかってみる:テキスト・図表のスライドへの埋め込み 3. PowerPointの構造 ~ レイアウトとプレースホルダ 4. レイアウトにあわせたテンプレートの作成 5. 自分で作ったスライド用のテンプレートを作る 本日の話題 {officer} packageを使った 柔軟なスライド生成
  37. 37. PowerPointの構造 PowerPointの用語 スライドマスター1 レイアウトA レイアウトB プレースホルダ① プレースホルダ② 表示 → スライドマスター 、から確認 プレースホルダ① プレースホルダ②
  38. 38. 基本手順+オプション {officer} packageを使ったPowerPointの生成 プレゼンレーションの初期化 read_pptx() スライドの追加 add_slide() コンテンツの設置 ph_with() パラグラフ・書式の修飾 fpar(), ftext() コンテンツの設置先の指定 ph_location** プレゼンレーションの出力 print(..., target = “XX.pptx) スライドの操作 *_slide() プレースホルダの操作 ph_**() 必須の操作 オプションの操作 スライドの作成・編集 スライドの構成情報を 確認しながら作業 設置するコンテンツの指定 図表・テキスト等のオブジェクト スライドマスター・レイアウトの指定 既存のPowerPointファイルの指定
  39. 39. レイアウトとプレースホルダ(1) • スライドレイアウトごとに、プレースホルダの配置が異なる • Officerパッケージに用意されているデフォルトテンプレートファイルは、以下のようなレイアウト構成
  40. 40. レイアウトとプレースホルダ(2) • レイアウト上のプレースホルダ配置の確認 プレースホルダのタイプ プレースホルダのラベル名 プレースホルダの 位置とサイズ
  41. 41. レイアウトとプレースホルダ(2) • レイアウト上のプレースホルダ配置の確認
  42. 42. プレースホルダの指定(1) • プレースホルダを含むスライドを追加する
  43. 43. プレースホルダの指定(2) • レイアウト上のプレースホルダの指定には、タイプ・ラベル名・位置を指定する方法がある プレースホルダの 位置とサイズ ph_location_type() :設置先のプレースホルダのタイプを指定 ph_location_label() :設置先のプレースホルダのラベル名を指定 ph_location_fullsize() :スライドのサイズに合わせる ph_location_left() :”TwoContent”レイアウト用(左) ph_location_right() :”TwoContent”レイアウト用(右) ph_location() :新しいプレースホルダを追加する プレースホルダのタイプ プレースホルダのラベル名
  44. 44. タイプで指定 • ph_location_type()で、プレースホルダのタイプを指定する • レイアウト内に同じタイプのプレースホルダが複数あった場合、いちばん小さいインデクスに設置される プレースホルダの指定
  45. 45. タイプで指定 • ph_location_type()で、プレースホルダのタイプを指定する • レイアウト内に同じタイプのプレースホルダが複数あった場合、いちばん小さいインデクスに設置される プレースホルダの指定
  46. 46. ラベル名で指定 • ph_location_type() の仕様上、‘body’, ‘title’, ‘ctrTitle’, ‘subTitle’, ‘dt’, ‘ftr’, ‘sldNum’ 以外のタイプをサポートしない → それ以外のプレースホルダは、ph_location_label() や ph_location () で指定する • ph_location_label()で、プレースホルダのラベル名を指定する • レイアウト内に同じラベル名のプレースホルダが複数あった場合、いちばん小さいインデクスに設置される プレースホルダの指定
  47. 47. スライドのサイズに合わせる • ph_location_fullsize() で指定する プレースホルダの指定
  48. 48. 二段組みレイアウト専用 • ph_location_left() と ph_location_right() で左右のコンテンツを指定できる プレースホルダの指定
  49. 49. 任意の位置サイズのプレースホルダの作成 • ph_location() で、新しいプレースホルダの設置位置・サイズ・背景色・回転角を指定できる プレースホルダの指定
  50. 50. 任意の位置サイズのプレースホルダの作成 • プレースホルダのカスタマイズによって、スライド上に任意のレイアウトを作成できる • ファイルとして保存して読み込むことで、テンプレートとしても使用できる
  51. 51. 1. 基本的な考え方と手順 2. つかってみる:テキスト・図表のスライドへの埋め込み 3. PowerPointの構造 ~ レイアウトとプレースホルダ 4. レイアウトにあわせたテンプレートの作成 5. 自分で作ったスライド用のテンプレートを作る 本日の話題 {officer} packageを使った 柔軟なスライド生成
  52. 52. 特定のレイアウトのテンプレート化(1) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい
  53. 53. 特定のレイアウトのテンプレート化(2) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  54. 54. 特定のレイアウトのテンプレート化(2) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  55. 55. 特定のレイアウトのテンプレート関数化(3) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい • プレースホルダとオブジェクトのペアで、コンパクトにスライドを作りたい。 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  56. 56. 特定のレイアウトのテンプレート関数化(3) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい • プレースホルダとオブジェクトのペアで関数化してコンパクトに。
  57. 57. 1. 基本的な考え方と手順 2. つかってみる:テキスト・図表のスライドへの埋め込み 3. PowerPointの構造 ~ レイアウトとプレースホルダ 4. レイアウトにあわせたテンプレートの作成 5. 自分で作ったスライド用のテンプレートを作る 本日の話題 {officer} packageを使った 柔軟なスライド生成
  58. 58. レイアウトのカスタマイズ(0) 1. 表示 → スライドマスター → レイアウトの挿入 → プレースホルダの挿入 2. ホーム → 選択 → オブジェクトの選択と表示 • 各プレースホルダーの名前とレイアウトの名前を重複しないように変更 3. スライドマスター → マスター表示を閉じる → ファイル → 保存 ラベル名が重複しないように設定する
  59. 59. カスタマイズしたレイアウトをテンプレート化(1) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義したい このレイアウトには、 同じtypeのプレースホルダが複数ある 重複していないラベル名を使って プレースホルダーを識別・指定すればよい
  60. 60. カスタマイズしたレイアウトをテンプレート化(2) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  61. 61. カスタマイズしたレイアウトをテンプレート化(2) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  62. 62. カスタマイズしたレイアウトをテンプレート関数化(2) • 特定のレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい • プレースホルダとオブジェクトのペアで、コンパクトにスライドを作りたい。 各プレースホルダに対応するコンテンツ 各プレースホルダに対応するアクション
  63. 63. カスタマイズしたレイアウトをテンプレート化(2) • 作成したレイアウトのスライドを自動生成したい • 特定のレイアウトのすべてのプレースホルダにアクションを定義すればよい • プレースホルダとオブジェクトのペアで関数化してコンパクトに。
  64. 64. 参考 Rmarkdown を Rstudio で knit • Rendering PowerPoint Presentations with Rstudio • https://support.rstudio.com/hc/en-us/articles/360004672913-Rendering-PowerPoint-Presentations-with-RStudio • RStudioとRMarkdownで作るPowerPointプレゼンテーション • https://qiita.com/nozma/items/bbd681490b2aaaf9ec93 • {export} package • Rで作成した図表を「パワポでくれ」と言われた時の対処法 • https://kato-kohaku-0.hatenablog.com/entry/2019/12/19/222429 • {officer} package • PowerPoint presentations generation @official • https://davidgohel.github.io/officer/articles/offcran/powerpoint.html • Function reference • https://davidgohel.github.io/officer/reference/index.html References

×