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

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

RStudioからLaTeXを使ってPDFで出力したい時の日本語設定について

※2016/10/29 Rmarkdownによるエントリーを公開しました

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

 

まだまだ勉強途中ですので、嘘や間違いや遠回りがあるかもしれませんが、
「RStudioで記述してそのままプレゼン資料や報告書にしたい!」というのが、私がLaTeXを始めた所期の目的でした。

yyhhyy.hatenablog.com

RStudioは、Sweaveが便利

RMarkdownを使うなど色々なルートがあるのですが、

*こちらを参考にさせて頂きました。とても助かりました↓

~knitr+pandocではじめる~『R MarkdownでReproducible Research』

その中でも、Sweaveを使うのが便利だと思っています。
というのも、LaTeXの記述がそのまま使えるので、コラムを使って分割したレイアウトにしたい、などの要望に応えることができる記述方法だからです

Sweaveの設定では、自分が使い慣れたXeLaTeXをエンジンに使用することにしました。(日本語パッケージが便利なのがXeLaTeXだなぁと今の所思っているからです)

f:id:yyhhyy:20151228223812j:plain

記述時の設定

報告書やプレゼンで使うのですから、Beamerを使用したいです

\documentclass{beamer}
\usepackage[size=a4,scale=3.5]{beamerposter}
\usepackage{xltxtra}
\setmainfont{Noto Sans CJK JP}
\setsansfont{Noto Sans CJK JP}
\setmonofont{Noto Sans CJK JP}
\usetheme{boxes}
\usecolortheme{seagull}
\useinnertheme{}
\useoutertheme{}
\logo{}
\usepackage{multicol}
\usepackage{graphicx}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}[frame number]
\setbeamertemplate{frametitle}[default][center]
\setbeamerfont{frametitle}{size=\LARGE, series=\bfseries}

beamerを使用し、紙で出力する時のためにbeamerposterにし、サイズと拡大縮小の率を設定します。日本語を使用する為のパッケージと日本語のフォントを設定します。

Rで記述する時の注意

はまったのが、日本語入りのグラフ、それもggplot2のフォント指定です。

g <- ggplot(data=setai_m,aes(x=variable,y=value,fill=Program))
g <- g + geom_bar(stat = "identity",position="dodge")
g <- g + theme_gray(base_family="Japan1GothicBBB")
g <- g + theme(axis.text.x=element_text(angle=45,colour="black",size=9,hjust=1))|

通常のplotの場合は、「par(family="Japan1")」などをつければ済むらしいのですが、ggplot2の場合は、そうではなくて、テーマの設定でちゃんとフォントを指定する必要があります。
この時、x軸のラベルの表示設定などを加えるよりも前にフォントを設定しておく必要があります。
また、使用するフォントは、取り敢えずRで元から使える日本語にしておきます。(システムに入っているフォントを使用する方法もあるらしいのですが、まだ理解できていません。)

最後に、エラーや警告を表示しないようにします(笑)

<<echo=FALSE,fig=TRUE,error=FALSE,warning=FALSE>>=

@

ちゃんとできていればそんな必要はない筈なのでしょうけれども、とりあえずそうやって今は謎を解明することよりも、Rから直接そこそこちゃんとしたPDF資料を作成できる、ということを優先しました。

結果の例

数字は全てダミーです。視聴回数別の分布を比較する場合の図をイメージしています。

f:id:yyhhyy:20151228232101j:plain

上記のコード

拙いながらアップします

\documentclass[]{beamer}
\usepackage[size=a4,scale=3.5]{beamerposter}
\usepackage{xltxtra}
\setmainfont{Noto Sans CJK JP}
\setsansfont{Noto Sans CJK JP}
\setmonofont{Noto Sans CJK JP}
\usetheme{boxes}
\usecolortheme{seagull}
\useinnertheme{}
\useoutertheme{}
\logo{}
\usepackage[]{multicol}
\usepackage{graphicx}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}[frame number]
\setbeamertemplate{frametitle}[default][center]
\setbeamerfont{frametitle}{size=\LARGE, series=\bfseries}

\begin{document}
\title{視聴回数分布}
%    \author[]{ymk}
%    \date{2015/12/28}
    %タイトル
    %\begin{frame}
    %\titlepage
    %\end{frame}
    %目次
    %\begin{frame}
    %\tableofcontents
    %\end{frame}
    %コンテンツ
    \section{20151228}
    \begin{frame}
     \frametitle{視聴回数分布}
    \begin{center}
  数字はダミーです
  \end{center}
  \begin{columns}[c]
    \begin{column}{0.45\textwidth}
  <<echo=FALSE,fig=TRUE,error=FALSE,warning=FALSE>>=
jirei <- read.table("jirei.csv",sep=",",header=T)
colnameschara <- c("Program","平均視聴回数","累積到達率","0回","1回","2回",
              "3回","4回","5回","6回","7回","8回","9回","10_14回")
colnames(jirei) <- colnameschara
library("reshape2", lib.loc="C:/yk2557/soft/r/R-3.2.2/library")
library("ggplot2", lib.loc="C:/yk2557/soft/r/R-3.2.2/library")
jirei_m <- melt(jirei,id.vars = c("Program","平均視聴回数"),
                measure.vars =c("1回","2回",
              "3回","4回","5回","6回","7回","8回","9回","10_14回"))
#head(jirei_m)
jirei_g <- ggplot(data=jirei_m,aes(x=variable,y=value,fill=Program))
jirei_g <- jirei_g + geom_bar(stat = "identity",position="dodge")
jirei_g <- jirei_g + xlab("視聴回数")
jirei_g <- jirei_g + ylab("%")
jirei_g <- jirei_g + theme_gray(base_family="Japan1GothicBBB")
jirei_g <- jirei_g + theme(axis.text.x=element_text(angle=45,colour="black",size=9,hjust=1))
jirei_g <- jirei_g + theme(axis.text.y=element_text(colour="black",size=9))
jirei_g <- jirei_g + geom_text(data=jirei_m,aes(x=variable,y=value,label=value,size=11,vjust=-0.3))
jirei_g <- jirei_g + facet_grid(.~Program)
plot(jirei_g,width=800,height=150)
  @
    \end{column}
    \begin{column}{0.45\textwidth}
    \begin{center}
    {\scriptsize
  <<echo=FALSE,fig=TRUE,error=FALSE,warning=FALSE>>=
knitr::kable(jirei[,1:3],caption="事例")
@
    }
    \end{center}
    \end{column}
    \end{columns}
    \end{frame}
\end{document}

もっと慣れたら、より便利になりそうですね!