我在这个问题上遇到了困难。最终创建了一个数据结构以备将来使用,并进行了一些搜索,以找到制作Unicode字符的“正确方法”(之前尝试过使用paste0("\u", n)
等方式,但都失败了,也没有想到聪明的解决办法)。
greeks <-
structure(list(grsym = c("α", "β", "γ", "δ", "ε", "ζ",
"η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ",
"ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω", "Α", "Β", "Γ",
"Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ",
"Ο", "Π", "Ρ", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω"),
decUTF = c(945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966,
967, 968, 969, 913, 914, 915, 916, 917, 918, 919, 920, 921,
922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934,
935, 936, 937), hexUTF = structure(c(945L, 946L, 947L, 948L,
949L, 950L, 951L, 952L, 953L, 954L, 955L, 956L, 957L, 958L,
959L, 960L, 961L, 962L, 963L, 964L, 965L, 966L, 967L, 968L,
969L, 913L, 914L, 915L, 916L, 917L, 918L, 919L, 920L, 921L,
922L, 923L, 924L, 925L, 926L, 927L, 928L, 929L, 931L, 932L,
933L, 934L, 935L, 936L, 937L), class = "hexmode"), htmlSym = c("α",
"β", "γ", "δ", "ε", "ζ", "η",
"θ", "ι", "κ", "λ", "μ", "ν",
"ξ", "ο", "π", "ρ", "ς", "σ",
"τ", "υ", "φ", "χ", "ψ", "ω",
"Α", "Β", "Γ", "Δ", "Ε", "Ζ",
"Η", "Θ", "Ι", "Κ", "Λ", "Μ",
"Ν", "Ξ", "Ο", "Π", "Ρ", "Σ",
"Τ", "Υ", "Φ", "Χ", "Ψ", "Ω"
), Description = c("GREEK SMALL LETTER ALPHA", "GREEK SMALL LETTER BETA",
"GREEK SMALL LETTER GAMMA", "GREEK SMALL LETTER DELTA", "GREEK SMALL LETTER EPSILON",
"GREEK SMALL LETTER ZETA", "GREEK SMALL LETTER ETA", "GREEK SMALL LETTER THETA",
"GREEK SMALL LETTER IOTA", "GREEK SMALL LETTER KAPPA", "GREEK SMALL LETTER LAMBDA",
"GREEK SMALL LETTER MU", "GREEK SMALL LETTER NU", "GREEK SMALL LETTER XI",
"GREEK SMALL LETTER OMICRON", "GREEK SMALL LETTER PI", "GREEK SMALL LETTER RHO",
"GREEK SMALL LETTER FINAL SIGMA", "GREEK SMALL LETTER SIGMA",
"GREEK SMALL LETTER TAU", "GREEK SMALL LETTER UPSILON", "GREEK SMALL LETTER PHI",
"GREEK SMALL LETTER CHI", "GREEK SMALL LETTER PSI", "GREEK SMALL LETTER OMEGA",
"GREEK CAPITAL LETTER ALPHA", "GREEK CAPITAL LETTER BETA",
"GREEK CAPITAL LETTER GAMMA", "GREEK CAPITAL LETTER DELTA",
"GREEK CAPITAL LETTER EPSILON", "GREEK CAPITAL LETTER ZETA",
"GREEK CAPITAL LETTER ETA", "GREEK CAPITAL LETTER THETA",
"GREEK CAPITAL LETTER IOTA", "GREEK CAPITAL LETTER KAPPA",
"GREEK CAPITAL LETTER LAMBDA", "GREEK CAPITAL LETTER MU",
"GREEK CAPITAL LETTER NU", "GREEK CAPITAL LETTER XI", "GREEK CAPITAL LETTER OMICRON",
"GREEK CAPITAL LETTER PI", "GREEK CAPITAL LETTER RHO", "GREEK CAPITAL LETTER SIGMA",
"GREEK CAPITAL LETTER TAU", "GREEK CAPITAL LETTER UPSILON",
"GREEK CAPITAL LETTER PHI", "GREEK CAPITAL LETTER CHI", "GREEK CAPITAL LETTER PSI",
"GREEK CAPITAL LETTER OMEGA")), .Names = c("grsym", "decUTF",
"hexUTF", "htmlSym", "Description"), row.names = c(NA, -49L), class = "data.frame")
这就是数据。函数intToUtf8
就是答案,我在bquote
策略中实现了它:
start_e <- expression()
plot(5,5)
text(2+(1:5),4, sapply( greeks[1:5,3],
function(x) c(start_e, bquote(italic(.(intToUtf8(x)))) ) ) )
我使用的是Mac电脑,所以这可能不是通用解决方案。以下是我在我的设备上看到的内容:
png(width=480, height=200); plot(1:10, 1:10, type="n")
text(5,6, expression(italic(β)~":"~italic(α)))
text(5,3, expression(italic("\u03B2")~plain(":")~italic("\u03B1")) );dev.off()
![enter image description here](https://istack.dev59.com/Bqzo2.webp)
tikzDevice
的解决方案不是这个问题的可接受答案吗...? - Ben Bolker?plotmath
中所说,您无法在数学表达式中使用斜体希腊字母。但是,如果您使用 UTF 字符,您可以像对待其他纯文本一样使它们变为斜体:text(5,5, "\u03B2", font=3)
。或者一个更完整的例子:text(5,5, expression(beta~ ":" ~ "\u03B2" ~ italic(beta) ~ ":" ~ italic("\u03B2")))
。 - MrFlickexpression(italic(β))
在我的机器上可以工作。不过,它有将所有内容都以斜体书写的倾向。 - baptiste