読者です 読者をやめる 読者になる 読者になる

広告/統計/アニメ/映画 等に関するブログ

広告/統計/アニメ/映画 等に関するブログ

RStudioからLaTeXを使ってPDFやHTMLでプレゼンテーション資料として出力したい時の設定について

Markdown R

以前、「RStudioからLaTeXを使ってPDFで出力したい時の日本語設定について」というエントリーを書いた時は、RStudioではSweaveが便利だと言いました。

yyhhyy.hatenablog.com

ところが最近はエラーが多く、RMarkdownを使うようになったので、その場合の設定についてメモします。

RMarikdownを使う場合

新規ファイル作成

New FileからRMarkdownでbeamerプレゼンテーションを選びます

f:id:yyhhyy:20161029180617j:plain

プリアンブルを丸っと入れ替える

注意点が幾つかあります

  • Beamerは変なサイズをしているので"\usepackage[size=a4,scale=3.5]{beamerposter}"でA4サイズになるようにする
  • 日本語のフォントを指定する"\usepackage{zxjatype}"," \setjamainfont{Noto Sans CJK JP}"
  • latexのエンジンをデフォルトから変更する。私の場合はxelatexが日本語との相性が良いと思いますので、"latex_engine: xelatex"を追記。 この際にインデントをするのも重要です。
---
title: "年齢別インターネットの利用機器状況"
author: "yhy"
date: "2016/10/29"
header-includes:
   - \usepackage[size=a4,scale=3.5]{beamerposter}
   - \usepackage{zxjatype}
   - \setjamainfont{Noto Sans CJK JP}
   - \usetheme{boxes}
   - \usecolortheme{seagull}
output:
  beamer_presentation:
    latex_engine: xelatex
---

ggplotの中でフォントを指定する

ggplotの中でもRが認識できる日本語フォントを使用する必要があります

riyoukiki_nenrei_g <- riyoukiki_nenrei_g + theme_bw(base_family="Japan1GothicBBB")

表はxtableの方が便利

表は、kableと xtableがありますが、xtableの方が便利だと感じました。主な注意点は以下です

  • xtableをprintする時にscaleboxでサイズを調整する
  • xtableをprintする時にlatexと明示する
  • xtableをprintする時にcommentをFALSEにしておく
  • 個別のセルのサイズを「p{~cm}」で固定すると横幅が入りきる

チャンクの中のコードは以下のようになります

{r echo=FALSE,warning=FALSE,error=FALSE,message=FALSE,results="asis"}
library("xtable", lib.loc="C:/hogehoge/r/R-3.2.3/library")
riyoukiki_nenrei_tb <- xtable(riyoukiki_nenrei,caption="%")
align(riyoukiki_nenrei_tb) <- "|l|l|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|"
print(riyoukiki_nenrei_tb,type="latex",comment = FALSE,scalebox=0.7)

※xtableの設定について

https://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf

出力結果イメージ

f:id:yyhhyy:20161029182839j:plain

f:id:yyhhyy:20161029183503j:plain

コード全体

今回は総務省のデータを加工して使用しました

統計表一覧 政府統計の総合窓口 GL08020103

※コードの前後は、チャンク「```」で囲んでいます

---
title: "年齢別インターネットの利用機器状況"
author: "yhy"
date: "2016/10/29"
header-includes:
   - \usepackage[size=a4,scale=3.5]{beamerposter}
   - \usepackage{zxjatype}
   - \setjamainfont{Noto Sans CJK JP}
   - \usetheme{boxes}
   - \usecolortheme{seagull}
output:
  beamer_presentation:
    latex_engine: xelatex
---

## 日本語の入ったグラフ

総務省「平成27年通信利用動向調査」補問 インターネットの利用機器(加工2)

{r echo=FALSE,warning=FALSE,error=FALSE,message=FALSE}
library("dplyr", lib.loc="C:/hogehoge/R-3.2.3/library")
library("reshape2", lib.loc="C:/hogehoge/R-3.2.3/library")
library("ggplot2", lib.loc="C:/hogehoge/R-3.2.3/library")
library("RColorBrewer", lib.loc="C:/hogehoge/R-3.2.3/library")
riyoukiki_nenrei <- read.csv("kosein15_2_1.csv",header = TRUE)
riyoukiki_nenrei_m <- melt(riyoukiki_nenrei,id.vars = c("Age"))
riyoukiki_nenrei_g <- ggplot(data=riyoukiki_nenrei_m,
                             aes(x=variable,y=value,fill=variable,color=variable))
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + geom_bar(stat="identity",position="dodge")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + theme_bw(base_family="Japan1GothicBBB")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + ggtitle("インターネットの利用機")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g  + ylab("%")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + xlab("")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + geom_text(aes(x=variable,y=value,label=value),vjust=-0.5,color="black",size=4)
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + scale_fill_brewer(palette = "Spectral")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + scale_color_brewer(palette = "Spectral")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + facet_wrap(~Age,scales = "fixed")
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + theme(axis.text.x=element_blank())
riyoukiki_nenrei_g <- riyoukiki_nenrei_g + scale_y_continuous(breaks=seq(0,100,by=10),limits = c(0,100))
plot(riyoukiki_nenrei_g)

## 日本語の入った表

総務省「平成27年通信利用動向調査」補問 インターネットの利用機器(加工2)

{r echo=FALSE,warning=FALSE,error=FALSE,message=FALSE,results="asis"}
library("xtable", lib.loc="C:/hogehoge/R-3.2.3/library")
riyoukiki_nenrei_tb <- xtable(riyoukiki_nenrei,caption="%")
align(riyoukiki_nenrei_tb) <- "|l|l|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|"
print(riyoukiki_nenrei_tb,type="latex",comment = FALSE,scalebox=0.7)

「reveal.js」でも出力できます

最近流行りのHTMLでのプレゼンテーションに出力することもRMarkdownなら簡単です

プリアンブルの変更

最初に「revealjs」パッケージをインストールしておきます。 アウトプットの出力をrevealjsに変更して、テーマを選べば終わりです。

---
title: "年齢別インターネットの利用機器状況"
author: "yhy"
date: "2016/10/29"
output:
  revealjs::revealjs_presentation:
    theme: default
    center: true
    fig_height: 5
    reveal_options:
      slideNumber: true
---

諸々の設定についてはこちら

Presentations with reveal.js

出力例

f:id:yyhhyy:20161029185246j:plain

表について

プリアンブルの下にCSSの指定を入れるとカスタマイズできて、文字色や背景色は変更できるのですが、表のサイズを上手く変更できませんでした。 こちらは、詳しい人にお願いします!!