1 수식 편집기1

기본적으로 \(\LaTeX\) 작성은 overleaf 웹사이트에서 수식을 작성하고 공유한다. 정규분포 등 많은 수식은 https://equplus.net/ 웹사이트에서 이미 \(\LaTeX\) 코드로 작성되어 있어 다운로드 받을 수 있다.

2 ggplot 수식 표기법 [1]

7.2 Using Mathematical Expressions in Annotations을 참조하면 ggplot에 수식을 넣을 수 있다. 방법은 plotmath을 사용하는 것인데, Mathematical Annotation in R을 참조한다.

ggplot2 팩키지에 expression() 함수를 사용해서 plotmath 그래픽 수식 표기를 수월하게 진행할 수 있다.

library(tidyverse)

normal_tbl <- tibble(normal_var = rnorm(10000, mean = 0, sd = 1))

normal_tbl %>% 
  ggplot(aes(normal_var)) +
    geom_histogram(aes(y=..density..), bins = 50, fill ="midnightblue") +
    # geom_density() +
    stat_function(data = normal_tbl,
                  fun = dnorm,
                  args = list(mean = 0, sd = 1), color = "red") +
    # labs(x = expression(glue::glue("{mu} = 0, {sigma} =1"))) +
    labs(x = expression(paste("정규분포: ", mu, " = 0, ", sigma, " = 1"))) +
    annotate("text", x = 2, y = 0.3, parse = TRUE, size = 5,
             label = "frac(1, sqrt(2 * pi)) * e ^ {-x^2 / 2}") +
    theme_minimal()

2.1 흔한 ggplot 그래프 [2]

ggplot 그래프에 수식과 관련된 정보를 함께 표현할 경우 문자열(String), 수학 표기법, 변수 등 다양한 요소가 한번에 필요한 경우가 있다.

\(\mu\)\(\sigma\) 수식 표기 뿐만 아니라 변수에 넣은 값도 함께 bquote()함수를 사용해서 ggplot 시각화를 할 수 있다.

bquote("표준정규분포: " ~ mu == .(mu_val) ~ "그리고" ~ sigma^2 == .(sigma_val)))

mu_val    <- 0
sigma_val <- 1

normal_tbl %>% 
  ggplot(aes(normal_var)) +
    geom_histogram(aes(y=..density..), bins = 50, fill ="midnightblue") +
    stat_function(data = normal_tbl,
                  fun = dnorm,
                  args = list(mean = 0, sd = 1), color = "red") +
    # labs(x = expression(glue::glue("{mu} = 0, {sigma} =1"))) +
    labs(x = expression(paste("정규분포: ", mu, " = 0, ", sigma, " = 1")),
         title = bquote("표준정규분포: " ~ mu == .(mu_val) ~ "그리고" ~ sigma^2 == .(sigma_val))) +
    annotate("text", x = 2, y = 0.3, parse = TRUE, size = 5,
             label = "frac(1, sqrt(2 * pi)) * e ^ {-x^2 / 2}") +
    theme_minimal()

2.2 \(\LaTeX\) → R 그래프 수식

수식을 \(\LaTeX\)으로 표현하면 이를 latex2exp 팩키지를 사용해서 곧장 ggplot 시각화에 사용할 수도 있다. latex2exp\(\LaTeX\) 문자열을 plotmath 표현식으로 변환하는 역할을 한다.

library(latex2exp)
library(Hmisc)

normal_tbl %>% 
  ggplot(aes(normal_var)) +
    geom_histogram(aes(y=..density..), bins = 50, fill ="midnightblue") +
    stat_function(data = normal_tbl,
                  fun = dnorm,
                  args = list(mean = 0, sd = 1), color = "red") +
    labs(x     = TeX("모수: $\\mu = 0, \\sigma^2 = 1 "),
         title = TeX("$X \\sim \\mathcal{N}(\\mu,\\,\\sigma^{2})$"))+
    theme_minimal()

일부 \(\LaTeX\) 코드만 변환이 가능해서 아래 \(\LaTeX\) 코드가 모두 변환이 된 것이 아니다. latex2exp_supported() 사용하면 적용가능한 \(\LaTeX\) 기호를 확인하고 사용한다.

\(X \sim \mathcal{N}(\mu,\,\sigma^{2})\)

latex2exp_supported()
 [1] "\\%"           "\\,"           "\\;"           "\\aleph"      
 [5] "\\approx"      "\\ast"         "\\bar"         "\\bigcap"     
 [9] "\\bigcup"      "\\bullet"      "\\cdot"        "\\cdots"      
[13] "\\clubsuit"    "\\cong"        "\\degree"      "\\diamondsuit"
[17] "\\div"         "\\dot"         "\\equiv"       "\\exists"     
[21] "\\forall"      "\\frac"        "\\geq"         "\\hat"        
[25] "\\heartsuit"   "\\Im"          "\\in"          "\\infty"      
[29] "\\int"         "\\LaTeX"       "\\lbrack"      "\\ldots"      
[33] "\\leftarrow"   "\\Leftarrow"   "\\leq"         "\\lim"        
[37] "\\mathbf"      "\\mathit"      "\\mathrm"      "\\neg"        
[41] "\\neq"         "\\normalsize"  "\\notin"       "\\nsubset"    
[45] "\\oplus"       "\\oslash"      "\\otimes"      "\\overset"    
[49] "\\partial"     "\\perp"        "\\pm"          "\\prime"      
[53] "\\prod"        "\\propto"      "\\rbrack"      "\\Re"         
[57] "\\rightarrow"  "\\Rightarrow"  "\\sim"         "\\small"      
[61] "\\spadesuit"   "\\sqrt"        "\\subset"      "\\subseteq"   
[65] "\\sum"         "\\supset"      "\\supseteq"    "\\surd"       
[69] "\\TeX"         "\\textbf"      "\\textit"      "\\tilde"      
[73] "\\times"       "\\tiny"        "\\underline"   "\\vee"        
[77] "\\wedge"       "\\widehat"     "\\widetilde"   "\\wp"         

3 컴퓨터 대수학2

\(\lambda \exp(-\lambda x)\)

1. Chang W. R graphics cookbook: Practical recipes for visualizing data. " O’Reilly Media, Inc."; 2012.

2. Rinker T. Math notation for r plot titles: Expression, bquote, & greek letters. 2018. https://trinkerrstuff.wordpress.com/2018/03/15/2246/.

 

데이터 과학자 이광춘 저작

kwangchun.lee.7@gmail.com