グラフィックス参考実例集:数式のプロット

タイトル等の注釈に expression, substitute 関数の引数として数式表現を与えることにより数式のプロットが可能になる。使える記号や品位は限られており、数式・記号の完全な制御には pictex ドライバーを用い、latex コードに落し、マニュアルで編集する。


例1

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),
     labels = expression(-pi, -pi/2, 0, pi/2, pi))
 left

例2 数式と数値変数の結合

## How to combine "math" and numeric variables :
plot(1:10, type="n", xlab="", ylab="", main = "plot math & numbers")
theta <- 1.23 ; mtext(bquote(hat(theta) == .(theta)), line= .25)
for(i in 2:9)
    text(i, i+1, substitute(list(xi, eta) == group("(",list(x,y),")"),
                            list(x = i, y = i+1)))
## note that both of these use calls rather than expressions.
##
text(1, 10,  "Derivatives:", adj = 0)
text(1, 9.6, expression(
 "             first: {f * minute}(x) " == {f * minute}(x)), adj = 0)
text(1, 9.0, expression(
 "     second: {f * second}(x) "        == {f * second}(x)), adj = 0)
 left
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)
 left

例3 いくつかの有用な記号

## some other useful symbols
plot.new(); plot.window(c(0,4), c(15,1))
text(1, 1, "universal", adj = 0); text(2.5, 1,  "\\042")
text(3, 1, expression(symbol("\042")))
text(1, 2, "existential", adj = 0); text(2.5, 2,  "\\044")
text(3, 2, expression(symbol("\044")))
text(1, 3, "suchthat", adj = 0); text(2.5, 3,  "\\047")
text(3, 3, expression(symbol("\047")))
text(1, 4, "therefore", adj = 0); text(2.5, 4,  "\\134")
text(3, 4, expression(symbol("\134")))
text(1, 5, "perpendicular", adj = 0); text(2.5, 5,  "\\136")
text(3, 5, expression(symbol("\136")))
text(1, 6, "circlemultiply", adj = 0); text(2.5, 6,  "\\304")
text(3, 6, expression(symbol("\304")))
text(1, 7, "circleplus", adj = 0); text(2.5, 7,  "\\305")
text(3, 7, expression(symbol("\305")))
text(1, 8, "emptyset", adj = 0); text(2.5, 8,  "\\306")
text(3, 8, expression(symbol("\306")))
text(1, 9, "angle", adj = 0); text(2.5, 9,  "\\320")
text(3, 9, expression(symbol("\320")))
text(1, 10, "leftangle", adj = 0); text(2.5, 10,  "\\341")
text(3, 10, expression(symbol("\341")))
text(1, 11, "rightangle", adj = 0); text(2.5, 11,  "\\361")
text(3, 11, expression(symbol("\361")))
 left

plotmath 機能で扱える数式の一覧

 left
 left
 left
 left
 left
構文意味構文意味
`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

添付ファイル: fileplotmath1.png 2432件 [詳細] fileRplot3.png 1675件 [詳細] fileRplot7.png 1598件 [詳細] fileRplot9.png 1656件 [詳細] fileplotmath2.png 2170件 [詳細] fileRplot5.png 1590件 [詳細] fileplotmath3.png 2141件 [詳細] fileRplot8.png 1656件 [詳細] fileRplot1.png 1693件 [詳細] fileRplot2.png 1594件 [詳細] fileRplot4.png 1594件 [詳細] fileRplot6.png 1723件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17