COLOR(red){SIZE(20){グラフィックス参考実例集:数式のプロット}} タイトル等の注釈に expression, substitute 関数の引数として数式表現を与えることにより数式のプロットが可能になる。使える記号や品位は限られており、数式・記号の完全な制御には pictex ドライバーを用い、latex コードに落し、マニュアルで編集する。 #contents ~ * 例1 [#f0c1220a] plotmath1 <- function () { x <- seq(-4, 4, len = 101) y <- cbind(sin(x), cos(x)) matplot(x, y, type = "l", xaxt = "n", main = expression(paste(plain(sin) * phi, " and ", plain(cos) * phi)), ylab = expression("sin" * phi, "cos" * phi), # only 1st is taken xlab = expression(paste("Phase Angle ", phi)), col.main = "blue") axis(1, at = c(-pi, -pi/2, 0, pi/2, pi), lab = expression(-pi, -pi/2, 0, pi/2, pi)) } #ref(グラフィックス参考実例集:数式のプロット/plotmath1.png, left) *例2。数式と数値変数の結合 [#k21c3a8e] plotmath2 <- function () { plot(1:10, type="n", xlab="", ylab="", main = "plot math & numbers") tt <- 1.23 ; mtext(substitute(hat(theta) == that, list(that= tt))) for(i in 2:9) text(i,i+1, substitute(list(xi,eta) == group("(",list(x,y),")"), list(x=i, y=i+1))) } #ref(グラフィックス参考実例集:数式のプロット/plotmath2.png, left) *例3 [#f3b0fe18] plotmath3 <- function () { plot(1:10, 1:10) text(4, 9, expression(hat(beta) == (X^t * X)^{-1} * X^t * y)) text(4, 8.4, "expression(hat(beta) == (X^t * X)^{-1} * X^t * y)", cex = .8) # 二重引用符で囲めば単なる文字列扱いになる text(4, 7, expression(bar(x) == sum(frac(x[i], n), i==1, n))) text(4, 6.4, "expression(bar(x) == sum(frac(x[i], n), i==1, n))", cex = .8) text(8, 5, expression(paste(frac(1, sigma*sqrt(2*pi)), " ", plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})), cex = 1.2) } #ref(グラフィックス参考実例集:数式のプロット/plotmath3.png, left) * plotmath 機能で扱える数式の一覧 [#fa22b941] | 構文 | 意味 | 構文 | 意味| | `x + y' | x plus y| `x*y' | juxtapose x and y | | `x/y' | x forwardslash y | `x %+-% y' | x plus or minus y | | `x %/% y' | x divided by y | `x %*% y' | x times y | | `x[i]' | x subscript i | `x^2' | x superscript 2 | | `paste(x, y, z)' | juxtapose x, y, and z | `sqrt(x)' | square root of x | | `sqrt(x, y)' | yth root of x | `x == y' | x equals y | | `x != y' | x is not equal to y | `x < y' | x is less than y | | `x <= y' | x is less than or equal to y | `x > y' | x is greater than y | | `x >= y' | x is greater than or equal to y | `x %~~% y' | x is approximately equal to y | | `x %=~% y' | x and y are congruent | `x %==% y' | x is defined as y | | `x %prop% y' | x is proportional to y | `plain(x)' | draw x in normal font | | `bold(x)' | draw x in bold font | `italic(x)' | draw x in italic font | | `bolditalic(x)' | draw x in bolditalic font | `list(x, y, z)' | comma-separated list | | `...' | ellipsis (height varies) | `cdots' | ellipsis (vertically centred) | | `ldots' | ellipsis (at baseline) | `x %subset% y' | x is a proper subset of y | | `x %subseteq% y' | x is a subset of y | `x %notsubset% y' | x is not a subset of y | | `x %supset% y' | x is a proper superset of y | `x %supseteq% y' | x is a superset of y | | `x %in% y' | x is an element of y | `x %notin% y' | x is not an element of y | | `hat(x)' | x with a circumflex | `tilde(x)' | x with a tilde | | `dot(x)' | x with a dot | `ring(x)' | x with a ring | | `bar(xy)' | xy with bar | `widehat(xy)' | xy with a wide circumflex | | `widetilde(xy)' | xy with a wide tilde | `x %<->% y' | x double-arrow y | | `x %->% y' | x right-arrow y | `x %<-% y' | x left-arrow y | | `x %up% y' | x up-arrow y | `x %down% y' | x down-arrow y | | `x %<=>% y' | x is equivalent to y | `x %=>% y' | x implies y | | `x %<=% y' | y implies x | `x %dblup% y' | x double-up-arrow y | | `x %dbldown% y' | x double-down-arrow y | `alpha' - `omega' | Greek symbols| | `Alpha' - `Omega' | uppercase Greek symbols | `infinity' | infinity symbol | | `partialdiff' | partial differential symbol | `32*degree' | 32 degrees | | `60*minute' | 60 minutes of angle | `30*second' | 30 seconds of angle | | `displaystyle(x)' | draw x in normal size (extra spacing) | `textstyle(x)' | draw x in normal size | | `scriptstyle(x)' | draw x in small size | `scriptscriptstyle(x)' | draw x in very small size | | `x ~~ y' | put extra space between x and y | `x + phantom(0) + y' | leave gap for "0", but don't draw it | | `x + over(1, phantom(0))' | leave vertical gap for "0" (don't draw) | `frac(x, y)' | x over y | | `over(x, y)' | x over y | `atop(x, y)' | x over y (no horizontal bar) | | `sum(x[i], i==1, n)' | sum x[i] for i equals 1 to n | `prod(plain(P)(X==x), x)' | product of P(X=x) for all values of x| | `integral(f(x)*dx, a, b)' | definite integral of f(x) wrt x | `union(A[i], i==1, n)' | union of A[i] for i equals 1 to n | | `intersect(A[i], i==1, n)' | intersection of A[i] | `lim(f(x), x %->% 0)' | limit of f(x) as x tends to 0 | | `min(g(x), x > 0)' | minimum of g(x) for x greater than 0 | `inf(S)' | infimum of S | | `sup(S)' | supremum of S | `x^y + z' | normal operator precedence | | `x^(y + z)' | visible grouping of operands | `x^{y + z}' | invisible grouping of operands | | `group("(",list(a, b),"]")' | specify left and right delimiters | `bgroup("(",atop(x,y),")")' | use scalable delimiters | | `group(lceil, x, rceil)' | special delimiters | | |