R进行绘图时输出希腊字符、上标、下标及数学公式

一般在咱们写论文时,所须要的统计图是很是严谨的,里面的希腊字符与上下脚标都必需要严格书写。所以在使用R绘图时,如何在咱们目标图中使用希腊字符、上标、下标及一些数学公式呢?在本博客中咱们会进行详细的说明。html

后面咱们都将以一个最简单的绘图为例,只是将其标题进行修改。web


希腊字母

使用希腊字符、上标、下标及数学公式,都须要利用一个函数:expression(),具体使用方式以下:express

plot(cars)
title(main = expression(Sigma))

输出:
api


上下标

expression()中的下标为[],上标为^,空格为~,链接符为*。示例代码以下:app

plot(cars)
title(main = expression(Sigma[1]~'a'*'n'*'d'~Sigma^2))

输出:
less


paste

想达到上面的效果,咱们其实可使用paste()expression()进行组合,不须要上述繁琐的过程,也可以达到咱们上述如出一辙的输出,而且方便快捷:ide

plot(cars)
title(main = expression(paste(Sigma[1], ' and ', Sigma^2)))

一个复杂的例子

目标:
svg

代码:函数

expression(paste((frac(1, m)+frac(1, n))^-1, ABCD[paste(m, ',', n)]))

进阶

在咱们想批量产生大量含有不一样变量值的标题时,若是遇到变量与公式的混合输出该如何操做,可参考博客:R 绘图中的公式如何与变量对象混合拼接flex


数学公式

最后的数学公式,只须要在expression()中进行相应的符号链接便可,具体要求可参考:Mathematical Annotation in R,鉴于其很不稳定,这里将里面的细节搬运过来。

(下表也能够直接在 R help 中搜索 plotmath 获取。)

Syntax Meaning
x + y x plus y
x - y x minus 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 %.% y x cdot 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 not x
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
x %~% y x is distributed as 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
symbol(x) draw x in symbol 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
theta1, phi1, sigma1, omega1 cursive Greek symbols
Upsilon1 capital upsilon with hook
aleph first letter of Hebrew alphabet
infinity infinity symbol
partialdiff partial differential symbol
nabla nabla, gradient 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
underline(x) draw x underlined
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§(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
group(lfloor, x, rfloor) special delimiters