ホームページ  勤務先↓

JavaScriptライブラリーを用いて作成.参考


このメモはRStudior-markdown(markdown+r)上でデータ解析を行うことを目的に作成

  • r-markdownの記法
  • rの記法
  • rによるデータ解析例,教育目的の初歩レベル

html_documentとして少し使ってみて感じたことは,

  • グラフを含む簡単なメモ,レポートには便利
  • texの数式が利用できる
  • rの知識は前提
  • 自由に図を描くには,r,htmlを用いる
  • 少し凝った体裁にするには,htmlcss(書式設定) ,texの知識は欠かせない
  • 動的な表示はtexよりも簡単のように思える

tex記法の数式が使えるメリットがあるが微調整が必要で,またtex並みの文章にするにはhtml記法も必要.それでも,簡単に文章が作れるメリットはあるだろう.情報,数学などに精通し,日ごろからtexrを用いている学生,研究者には便利だと思うが,入学直後の学生に対する情報リテラシーには向かないかも.

markdownhtml文書へ変換できるフォーマットなのでhtmlで書くより楽.r-markdownの出力はhtmlpdfwordlatexなどを選択できるが,ここでは一般的なhtmlとした.r-markdown

  • ヘッダー(YAMLという)
  • 文書(texの数式も可能)
      必要なら文書スタイルを別途設定するcssファイル作成
  • チャンク(rのプログラム)
      コードブロック
      インライン

からなり,knit(ニット)で出力(レンダリング).
 ネットには関連する各種のコードの例が載っているが,パッケージのバージョンの違い,パッケージ間のコンフリクトなどによりすぐに使えない場合が多く,結局試行錯誤するしかない.
 凝った文書スタイルにするためには,cssファイルを別途用意してそこ書き込むか,定型のスタイルファイル,たとえばrmdformatsにあるいくつかのスタイルが参考になる.

ドキュメント+計算を可能にする例(上記ホームページを参照)

  • tex+python
  • tex+wolframengine

r-markdownの設定

ヘッダ

ヘッダは文章のスタイルを決めるもので,RStudior-markdownのファイルを開くとデフォルの設定になっているが,必要に応じて設定を追加して,

title: "1. 環境とフォント"
author: "松葉"
date: "更新:`r Sys.Date()``"  #`r コード`はrのインライン実行
output:
 html_document: # htmlで文章を作成
 css: "mystyle.css" # 独自の書式をcssで設定する場合
 fontsize: 11pt # htmlでは効かない
 toc: yes # 目次の有無
header-includes: # texのプリアンプル
 \usepackage{graphicx,amsmath}

のようにする.outputhtmlの場合はfontsizeが効かないように,ヘッダーだけでは文章のスタイルをすべて設定することはできない.体裁を変更するには,
  markdown(ヘッダ)
  csshtmlのタグで囲んだ範囲の文字の色,大きさ,背景の色や配置などを指定
  html:微調整
を利用するが,設定の優先順位など相互にどのような関係にあるのか不明(あまり実践がないので).
ここでは,cssファイル(上記の例ではmystyle.cssとしたテキストファイル)をRmdファイルと同じフォルダに用意しておき,

body{           # 文章のスタイル
  font-family: 'MS PMincho';         # 明朝体
  font-size: 11pt;                   # 文字の大きさ
}
h1.title {      # h1のtitleのスタイル
  text-align: center;
  font-size: 38px;
  color: DarkRed;
  border: None;
  background: None;
}
h1 {            # h1のスタイル
  text-align: left;
  font-size: 16pt;
  font-weight: bold;
    padding: 0.3em 0.3em;             #文字の上下左右の余白
    color: #494949;                   #文字色
    background: #f4f4f4;              #文字色背景色
    border-left: solid 5px #7db4e6;   #左端の線
    border-bottom: solid 3px #d7d7d7; #下線
}

のように記述する.通常のテキストの書体はデフォルト(markdownではテキストの色は変更できない)で決まっているが,いくつかの方法で独自に指定できる.

  • cssbodyなどで,文字の書体,大きさを指定
  • 微調整は部分的であればhtmlで指定 <p style="font-family: 'Times New Roman','MS PMincho'; font-size:12pt; font-style:italic; color: red"> これは個人的なNote </p>

    これは個人的なNote

チャンクのグローバル設定

チャンクは一つの計算単位であるが,それぞれにオプションが設定できる.すべてのチャンクにオプションを設定するには,ヘッダに続いて,

 ```{r setup,include=FALSE}  # include=FALSEで文書に載せない
  library(tidyverse)          # モデル化,視覚化等(ggplot2も含む)
  knitr::opts_chunk$set(
   echo=TRUE,                 # チャンク表示の有無
   eval=TRUE,                 # チャンク実行の有無
   warning=FALSE,             # 警告表示の有無
   message=FALSE,             # メッセージ表示の有無
   fig.height = 4/1.63,       # 図の高さ
   fig.width = 4,             # 図の幅
   fig.align = "center",      # 図の位置
   class.source="bg-success", # チャンクの背景色
   class.output="bg-warning"  # 計算結果の背景色
   )
  knitr::knit_hooks$set(small_mar=function(before,options,envir) {
   if (before) {
     par(mar=c(4,4,0.1,0.1))  # 上右側マージンを小さく設定
     par(bg="white")          # 背景色
   }
  },
  webgl = hook_webgl)
 ```

とする.rのパッケージは予めインストールしておく(あるいインストールを促される).knitr::opts_chunk$setは,チャンクと計算結果の表示に関する一括設定.knitr::knit_hooks$setも同じようであるが,チャンク実行前後の出力の調整などを行う関数の設定.

数式

インライン

tex記法($数式$)に準ずるが,凝るならば少々手直しがいる.たとえば,
    正規分布にしたがう確率変数\(X\)\(X \sim N(\mu,\sigma^2)\)と表す.
から分かるように,Microsoft Edgeで開いて確かめると,文字の大きさが多少気になる.cssでは数式のみの大きさが調整できない?そこで,$\small 数式$とすると,
    正規分布にしたがう確率変数\(\small X\)\(\small X \sim N(\mu,\sigma^2)\)と表す.
とほぼ大きさが揃う?.
htmlで修正する場合は,<span style="font-size:9pt">文字</span>とすれば,
    正規分布にしたがう確率変数\(X\)\(X \sim N(\mu,\sigma^2)\)と表す.

別立

\[ f(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left\{-\frac{(x-\mu)^2}{2\sigma^2}\right\} \qquad A = \begin{pmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{pmatrix} \] r-markdownの表(体裁は自由に変更できないようである)の中に入れる

\(x \quad \hat{x} \quad \alpha\) \(\boldsymbol{x}_k\) \(x,y,z\) \(\dfrac{a}{b}\) \(\displaystyle\binom{n}{k}\)
\(\sum_{k=1}^n x_k\) \(f(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left\{-\frac{(x-\mu)^2}{2\sigma^2}\right\}\) \(A = \begin{pmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{pmatrix}\) \(\int_a^bf(x)dx\)

texコマンドを定義

\newcommand{\combi}[2]{{}_{#1} \mathrm{C}_{#2}}%組合せ記号 と定義して$\combi{n}{m}$とすると,

\[{}_{n} \mathrm{C}_{m}=\dfrac{n!}{m!(n-m)!}\]

グラフ

rの高水準作図関数

2Dグラフ
準備した時系列データの構造を調べておく.

aging<-ts(c(7.1,7.9,9.1,10.3,12.1,14.6,17.4,20.2,23.0,26.8,29.1,30.3,31.6,33.4,36.1),start=c(1970),frequency=1/5)
str(aging)
##  Time-Series [1:15] from 1970 to 2040: 7.1 7.9 9.1 10.3 12.1 14.6 17.4 20.2 23 26.8 ...

と,rでの時系列データの表し方に注意.

windowsFonts(myFont="MS Mincho")
#ts.plot関数
ts.plot(aging,xlim=c(1970,2040),ylim=c(0,40),gpars=list(pch=19,lty=1,type="o",family="myFont",cex.lab=0.5,xlab="西暦",ylab="高齢化率"))

#ggplot2を用いたautoplot関数
autoplot(aging,geom="point",xlab="西暦",ylab="高齢化率")+
 scale_x_continuous(breaks = seq(1970,2040,20))

plotでも若干違いがあるが,ts.plotと同じようなグラフ.一方.autoplotggplot2を使った表示.オプシンの設定でいろいろ変更できる.

3Dグラフ(回転)
エクセルファイルからデータを読み込む場合.

work<-read.csv("プロ野球勝敗表2009-2015.csv", fileEncoding = "CP932")
baseball<-data.frame(
 得点=work[,4],
 失点=work[,5],
 勝率=work[,6]
 )
plot3d(baseball,type="s",radius=7,col=ifelse(baseball[,3]>0.5,'red','black'),
 xlim=c(350,800),ylim=c(350,800),zlim=c(0.3,0.7),cex.lab=0.3)

rの低水準作図用関数

下記の例は線を引く関数linesを用いた例.

koch=function(m,x=0,y=0,t=0,L=1) {
 if(m==0) {
 lines(c(x, x+L*cos(t)), c(y, y+L*sin(t)))
 } else {
 koch(m-1,x,y,t,L/3)
 koch(m-1,x+(L/3)*cos(t),y+(L/3)*sin(t),t+pi/3,L/3)
 koch(m-1,x+(L/3)*(cos(t)+cos(t+pi/3)),y+(L/3)*(sin(t)+sin(t+pi/3)),t-pi/3,L/3)
 koch(m-1,x+(2*L/3)*cos(t),y+(2*L/3)*sin(t),t,L/3)
 }
}
split.screen(c(2,3));
## [1] 1 2 3 4 5 6
screen(1);koch(0);title("m=0")
screen(2);koch(1);title("m=1")
screen(3);koch(2);title("m=2")
screen(4);koch(3);title("m=3")
screen(5);koch(4);title("m=4")

tikzpictureを用いる

 `{r,engine='tikz'}
   \begin{tikzpicture}
        tikzのコード
   \end{tikzpicture}
 `

のように書く.

\begin{tikzpicture}[every node/.style={thick, minimum size=1cm}]
 \filldraw[color=red!60, fill=red!5, very thick](0,0) circle (2);
 \filldraw[color=blue!60, fill=blue!5, very thick](2,0) circle (2);
 \node[rectangle,fill=red!20,draw] at (0,0) (A) {$A$};
 \node[rectangle,fill=blue!20,draw] at (1,0.75) (B) {$B$};
 \node[rectangle,fill=green!20,draw] at (2,0) (D) {$D$};
 \node[rectangle,draw] at (1,-0.75) (C) {$C$};
\end{tikzpicture}

一旦図をpdfファイルとして出力し,それをr-markadownに取り込んでいるようである.

r-markdown記法

  • r-markdownmathjaxtexの数式記法を表示するためのJavaScriptのライブラリである
  • 数式はtex記法であるが,インラインで数式を入れる場合は文字と数式の大きさが異なる.$\frac{3}{4}$とすると\(\frac{3}{4}\)のように文章文字よりも大きい.$\small \frac{3}{4}$とすると\(\small \frac{3}{4}\)となる.文字の大きさを色々変えて数式を表示せよ.
  • 文字の大きさの変更は部分的には,<font size="4">文字</font>で可能だが,文章全体にわたってはヘッダーにcss: style.cssとしてcssファイルを別途作る.
  • 文字の(大きさも)色は,htmlで行う.たとえば,<span style="color: red">インライン</span>とすれば,インラインとなる.

問題

  1. cssfont-family: ‘Times New Roman’,‘MS PMincho’と,font-family: ‘MS PMincho’,‘Times New Roman’とした場合の違いを調べよ.
  2. 3次元の散布図scatterplot3dplot3dの違いを調べよ.

Rの環境

  Rのバージョンは

c(R.Version()$platform, R.Version()$version.string)
## [1] "x86_64-w64-mingw32"           "R version 4.0.4 (2021-02-15)"

である.Rのバージョンはしばしば更新されるので,最新バージョンを確認しよう.Rのライセンスの詳細はlicence()で見ることができる.ただし英文で,またオンラインマニュアル等も英語で書かれているが,研究者や大学院生が使うことが前提であれば問題ないが,学部生には少々困難かも.
  Rのバージョンはを起動すると,入力(コンソール)画面が現れる.エディタ-(スクリプト)を開いて,コードを記入して,Ctrl+Rで実行すると,コンソール「>」にそのコードが入力され実行される.コンソールに直接入力できるがエディタ-機能がないので,使いづらい.さらに,データ等を表示するためのグラフィックスは別の出力画面(デバイス)がある.合計三つの画面があり,これだけで使う気になれない.もっとも,には豊富な統計処理が装備されているので使っているが,商用のソフトとは違い,不便さは我慢するしかない.
  このメモはRStudioとう便利なインターフェースを用いれいる.コンソール,エディタ-,出力画面が同じ画面上に現れるので便利であるが,基本的にはRそのもので,RStudioRを前提にしているので,まずRをインストールしておかなければならない.
  Rをインストールすると,すでにインストールされている基本的なパッケージがあり,各種の基本的な関数が入っている.それ以外の用途に応じたパッケージは,必要に応じて別途インストールしなければならない.インストール済みの全てのパッケージは,library()と入力すると,別画面「利用可能なパッケージ」にその一覧が現れる.パッケージをインストールするとはCRAN(Japanミラーサイトを選択)からダウンロードしてコンピュータの適当なデイレクトルに保存することである.そのパッケージを実際に使うためにはlibraryで実行可能な状態にしなければならない.一度インストールしておけば,あとは実行可能な状態にするだけである.たとえば,Aというパッケージを初めて使うためには,

install.packages("A")
library(A)

とする.2回目以降はlibrary(A)だけでよい.これと同じ動作は,起動したときの画面上でもできる.前者ではメニューの「パッケージ」→「パッケージのインストール」でCRANからAをダウンロードし,後者では「パッケージ」→「パッケージの読み込み」でAを選択する.
  最も基本的なBaseパッケージに入っているものの一覧は,

print(library(base),quote=FALSE)
##  [1] leaflet   rgl       gridExtra forcats   stringr   dplyr     purrr    
##  [8] readr     tidyr     tibble    tidyverse knitr     ggfortify ggplot2  
## [15] stats     graphics  grDevices utils     datasets  methods   base

である.この中にあるstatsを調べるため,

library(help="stats")

とすると,別画面「パッケージstatsのドキュメント」には各種の統計処理用のプログラムが表示される.たとえば,「AIC Akaike’s An Information Criterion」は赤池の情報量基準,「lm Fitting Linear Models」は線形回帰モデルのように,どのような関数が入っているかはその略称あるいは名前からなんとなく分かるものが多い.通常使う統計プログラムはたいていこの中にある. 続いて,

library(help="graphics")

とすると,別画面「パッケージgraphicsのドキュメント」には各種のグラフが表示される.最も基本的なものに「plot Generic X-Y Plotting」がである.しかし,ヒストグラムを描くプログラムは見当たらないが,plotが(x,y)座標を与えて散布図等を描くこのplotは,ヒストグラムを描くためにもプログラムでもある.plotはよく用いるので,その使い方は十分に習得しておこう. 最後に,

library(help="base")

を調べておこう,別画面「パッケージbaseのドキュメント」には各種の基本的な関数が表示される.たとえば,dateは現在の日付と時刻,eigenは固有値,sumは和,solveは連立一次方程式の解法,などである.
  search()は現在読み込まれている(ロード済み)パッケージの一覧を表示するコマンドである.Rを起動した時点では,読み込まれている(ロード済み),つまり実行可能なパッケージの一覧は,

search()
##  [1] ".GlobalEnv"        "package:leaflet"   "package:rgl"      
##  [4] "package:gridExtra" "package:forcats"   "package:stringr"  
##  [7] "package:dplyr"     "package:purrr"     "package:readr"    
## [10] "package:tidyr"     "package:tibble"    "package:tidyverse"
## [13] "package:knitr"     "package:ggfortify" "package:ggplot2"  
## [16] "package:stats"     "package:graphics"  "package:grDevices"
## [19] "package:utils"     "package:datasets"  "package:methods"  
## [22] "Autoloads"         "package:base"

となっている.この時点で実行可能なパッケージはbaseの中の7個である.次に,いくつかのパッケージを読み込んでみよう.例えば,よく用いられるパッケージで,デフォルトのgraphicsよりも綺麗な,また複雑な図が描ける

library(ggplot2)

を読み込んでみよう.すると,

search()
##  [1] ".GlobalEnv"        "package:leaflet"   "package:rgl"      
##  [4] "package:gridExtra" "package:forcats"   "package:stringr"  
##  [7] "package:dplyr"     "package:purrr"     "package:readr"    
## [10] "package:tidyr"     "package:tibble"    "package:tidyverse"
## [13] "package:knitr"     "package:ggfortify" "package:ggplot2"  
## [16] "package:stats"     "package:graphics"  "package:grDevices"
## [19] "package:utils"     "package:datasets"  "package:methods"  
## [22] "Autoloads"         "package:base"

となって,ggplot2が追加されていることが確認できる. なお,追加したパッケージggplot2に関して調べたいときは,読み込んだ後に,?ggplot2あるいはhelp(ggplot2)とすれば,英文のドキュメント(PDF)が現れる.また,このようなパーケージの開発者自身による解説書「Rグラフィックスクックブック-ggplot2によるグラフ作成のレシピ集,オライリージャパン,2013年」もあるので参考になる.
  作業しているホーディレクトリは,

getwd()

で分かる.コンソール画面でメニューの「ファイル」から「ディレクトリの変更...」を選択しても分かる.
  また,そこでディレクトリを変更することもできる.プログラムやデータを保存するために別のディレクトリにまとめたい場合など,変更した方が分かりやすいこともあるだろう.その場合には作業ディレクトリを変更する.同じ事をコンソールのコマンドで指定することもできる.この場合は.まずtcltkパッケージを読み込んで,

library("tcltk")
setwd(paste(as.character(tkchooseDirectory(title="保存先を選択"),sep="",collapse="")))

とすると,開いたウィンドから選択して,フォルダーを指定する.

RStudio,Rの記法

  • RおよびRStudioの使い方に慣れよう.
  • RStudio画面の上にあるHepRStudioを,Toolsでパケージをアップデートできる.あるいは,RStudioの右下の画面にあるPackagesで行う.

問題

  1. グローバル変数.GlobalEnvに関し,ls(.GlobalEnv)で何が入っているか,またその親をparent.env(.GlobalEnv)で調べよ.

チャンク内でのフォント

グラフに数式を表示させる場合など,チャンクでは数式フォントなど少々工夫しないとtexのようにはならない.

Windowsフォントを利用

  rで計算結果のグラフを作成しそれをwordtexに貼り付けるのが一般的な使い方であろう.通常,rで文書まで作成することは前提にしないが,r-markdownではそうである.従って,日本語フォントはwordtexのようには使い勝手はよくなく,十分整備されていないが,計算結果を資料とする場合,グラフの凡例などに日本語フォントを使いたいものである. 標準で出力画面用のフォントとして,

str(windowsFonts())
## List of 4
##  $ serif : chr "TT Times New Roman"
##  $ sans  : chr "TT Arial"
##  $ mono  : chr "TT Courier New"
##  $ myFont: chr "MS Mincho"

が定義されている.serifという名前で,英語フォントのTimes New Romanが登録されている.TTTrueTypeの略で,boldとかitalicなどの指定はない.英文ならこれで十分かもしれない.例えば,serifつまりTimes New Romanフォントでは,

par(mar=c(0,0,0,0))
plot.new()
text(0.2,0.8,"matsuba 0123",family="serif",cex=2,pos=1)
windowsFonts(myFont="HGS行書体")
text(0.6,0.8,"松葉 0123",family="myFont",cex=2,pos=1)

のようになる.familyにはフォントserifを設定する.cexは文字の大きさの倍率.なお,最初にtextだけ入力しても何も表示されない.plotは一般的なグラフを描くための関数であるが,ここでは,何も描かない白い画面(大きさは横縦ともに1)だけを表示する.その後でtextで文字をその上に書く.同じ位置にtextで別の文字を描くと,重ね書きする.plot以外の方法もあるので,それについては以下で説明する.
  日本文の場合は英文用のフォントだけでは不十分である.必要に応じて,使用したい日本語フォントをwindowsFonts()を使って新たなフォントファミリーを適当な名前で登録し,その後で作図関数やグラフィックスパラメータのfamilyで引用する.上の例では,HGS行書体はWindowsFontsディレクトリに登録されている.最初にmyFont(なんでもOK)という名前でHGS行書体を登録しておいて,textではfamily=“myFont”で指定する.なお,ここでは,先の例より簡単な方法であるplot.new()を用いた.その他のwindowsのフォントをいろいろ試してみたが,すべてが正しく表示されないようである.
  最後にもう一例

windowsFonts(myFont="Georgia Italic")
par(mar=c(0,0,0,0))
plot.new()
text(0.5,0.8,"0123 abcdefg",family="myFont",cex=2,pos=1)

物理の教科書などで重力の記号としてgが用いられるが,gのイタリック体は教科書のようなgにならなく困ることがある.いくつかあるが,ここではGeorgia Italicを使った.
  通常,報告書や論文で使うフォンは,MS明朝体MSゴシック体の日本語フォントと,Times New Roman,数式でよく用いるsymbolが多いであろう.そこで,

windowsFonts(JP1="MS Mincho",JP2="MS Gothic",
 JP3="Times New Roman",JP4="symbol")

と定義する.文字を書くための関数

jtext<-function(x,xp) {
 text(xp,0.6,x,cex=1.25,font=1,pos=3) #標準
 text(xp,0.4,x,cex=1.25,font=2,pos=3) #太字
 text(xp,0.2,x,cex=1.25,font=3,pos=3) #斜体
 text(xp,0.0,x,cex=1.25,font=4,pos=3) #太字斜体
}

と定義しておく.fontの意味は,font=1は標準体,font=3は斜体などである.

jfont <- function(x) {
 plot.new()
 lines(c(0,1),c(1,1),col="black",lwd=2)
 lines(c(0,1),c(0.8,0.8),col="black",lwd=1)
 lines(c(0,1),c(0.0,0.0),col="black",lwd=2)
 par(family="JP1")
 text(0.1,0.8,"明朝",cex=1.5,font=1,pos=3)
 jtext(x,0.1)
 par(family="JP2")
 text(0.35,0.8,"ゴシック",cex=1.5,font=1,pos=3)
 jtext(x,0.35)
 par(family="JP3")
 text(0.6,0.8,"Times",cex=1.5,font=1,pos=3)
 jtext(x,0.6)
 par(family="JP4")
 text(0.85,0.8,"Symbol",family="JP3",cex=1.5,font=1,pos=3)
 jtext(x,0.85)
}
par(mar=c(0,0,0,0))
jfont("松葉0123abcd")

  次に数式の場合を考えよう.数式を書く場合,\(\frac{1}{\sqrt{2πσ^2}}e^{-(x-μ)^2/(2σ^2)}\)(これはtexで表示)のように表したいものである.Rと比べよう.

par(mar=c(0,0,0,0))
plot.new()
text(0.1,0.5,expression(paste(frac(1,sqrt(2*symbol(p)*symbol(s)^2)),e^{-frac((x-symbol(m))^2,2*symbol(s)^2)})))
text(0.4,0.5,expression(paste(frac(1,sqrt(2*pi*sigma^2))," ", italic(e)^{-frac((italic(x)-mu)^2,2*sigma^2)})),family="JP3")

①フォントfamilyを指定しなければ,Timesにならない(左の数式).
②シンボル文字は例えば,symbol(p)でもsigmaとしても同じ.
③個別文字の斜体はitalic(x)で指定する.italic(sigma)としもσの斜体にはならない.
④文字間のスペースは0なので,見栄えよい数式にするためにはスペースを具体的に" "のように指定しなければならない.
  もう一例示しておく.

windowsFonts(JP3="Times New Roman")
par(mar=c(0,0,0,0))
plot.new()
text(0.5,0.5,expression(paste(frac(1,italic(n))," ",sum(italic(x)[italic(i)],italic(i)==1,italic(n)))),family="JP3")

tex流のフォントを利用する

  数式の記法としてはtexに慣れている方は多いと思う.その記法を上記plotmathの記法に変換してくれるteX()という関数がパッケージlatex2expにより提供されている.これはあくまでplotmathの枠内で数式を書くものであり,新しい機能を追加するものではないが,plotmathの独自記法を覚える必要がないという点で便利である.

install.packages("latex2exp")
library(latex2exp)

詳細はGitHubのstefano-meschiari/latex2expに解説がある. これを使えば,このページの最初の例は次のように書くことができる。\(バックスラッシュ)は2重に書く必要がある.

library(latex2exp) #パッケージの読み込み
par(mar=c(1,1,1,1))
plot.new()
text(0.5,0.5,TeX("$\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp^{-\\frac{(\\mathit{x}-\\mu)^2}{2\\sigma^2}}$"),family="JP3")

ただし,ここでも文字は自動的にはイタリック体にならないので,明示的に\mathit{x}のように書く必要がある.

showtextでフォントを使う

  Googleが定義したGoogle Fontsも利用できる.まず,install.packages(“showtext”)しておこう.ただし,フォントを保存して使う場合でなければ,ネット接続が必要.
  例えば,GoogleのGreat Vibes書体などを用いると,

library(showtext)
font_add_google("Great Vibes")
font_add_google("Kosugi Maru")
par(mar=c(0,0,0,0))
plot.new()
showtext_auto()
text(0.4,0.3,"matsuba 0123",family="Great Vibes",cex=3)
text(0.4,0.7,"松葉 あいうえお matsuba 0123",family="Kosugi Maru",cex=2)

ここで,チャンクのオプシンfig.showtext=TRUEは必須.日本語に関して言えば,Google Fontsにある“Noto Sans JP”, “Noto Serif JP”, “M PLUS 1p”, “M PLUS Rounded 1c”, “Kosugi”などは利用できるが,その他はなぜかエラーとなって利用できないものが多い.