我的类别需要用希腊字母命名。我正在使用 ggplot2
,它与数据完美结合。不幸的是,我无法弄清楚如何将这些希腊符号放在 x 轴上(在刻度线处)并使它们出现在图例中。有什么办法吗?
更新:我查看了 link,但是,没有描述完成我想做的事情的好方法。
expression
函数的讨论:stackoverflow.com/questions/1395105/getting-latex-into-r-plots
viewports
的任何提示。如果可以做到这一点,我相信更改 x-tic 标记将是直截了当的。
latex2exp
包:cran.r-project.org/web/packages/latex2exp/vignettes/…
这是一个优秀 wiki 的 link,它解释了如何在 ggplot2 中放置希腊符号。总之,这是您获取希腊符号的方法
文本标签:在 geom_text 或注释中使用 parse = T。轴标签:使用表达式(alpha)获取希腊字母。构面标签:在构面内使用 labeller = label_parsed。图例标签:在图例标签中使用 bquote(alpha == .(value))。
您可以在链接中查看这些选项的详细用法
编辑。沿刻度线使用希腊符号的目的可以如下实现
require(ggplot2);
data(tips);
p0 = qplot(sex, data = tips, geom = 'bar');
p1 = p0 + scale_x_discrete(labels = c('Female' = expression(alpha),
'Male' = expression(beta)));
print(p1);
有关执行此操作时可用的各种符号以及如何使用它们的完整文档,请参阅 ?plotmath
。
最简单的解决方案:使用 Unicode 字符
不需要 expression
或其他软件包。
不确定这是否是 ggplot 的新功能,但它可以工作。它还可以轻松混合希腊文本和常规文本(例如在刻度中添加“*”)
只需在文本字符串中使用 unicode 字符。似乎适用于我能想到的所有选项。编辑:以前它在构面标签中不起作用。这显然已在某个时候得到修复。
library(ggplot2)
ggplot(mtcars,
aes(mpg, disp, color=factor(gear))) +
geom_point() +
labs(title="Title (\u03b1 \u03a9)", # works fine
x= "\u03b1 \u03a9 x-axis title", # works fine
y= "\u03b1 \u03a9 y-axis title", # works fine
color="\u03b1 \u03a9 Groups:") + # works fine
scale_x_continuous(breaks = seq(10, 35, 5),
labels = paste0(seq(10, 35, 5), "\u03a9*")) + # works fine; to label the ticks
ggrepel::geom_text_repel(aes(label = paste(rownames(mtcars), "\u03a9*")), size =3) + # works fine
facet_grid(~paste0(gear, " Gears \u03a9"))
https://i.imgur.com/5feSM91.png
由 reprex package (v0.3.0) 于 2019 年 8 月 28 日创建
expression
或 bquote
形成的对象类型 - 您最终会得到一个可以以任何其他方式使用角色对象的角色对象。
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : “conversion failure on '>3σ' in 'mbcsToSbcs': dot substituted for <cf>
使用 expression(delta)
其中 'delta' 表示小写 δ
,使用 'Delta' 获得大写 Δ
。
这是希腊字符的完整列表:
α alpha B β beta C γ gamma D d delta E e epsilon Z z zeta H h eta Θ θ theta I i iota K k kappa L λ lambda M μ mu N ν nu ξ ξ xi O o omicron Π π pi Ρ ρ rho Σ σ sigma T τ tau Y y upsilon Φ φ phi X χ chi Ψ ψ psi Ω ω omega
编辑:从评论中复制,当与其他词一起使用时使用:expression(Delta*"price")
Δprice
这样的标签? expression(Deltaprice)
不起作用,expression(Delta price)
也不起作用
xlab(expression(Delta)price)
给出错误
您不需要 latex2exp
包来做您想做的事。以下代码可以解决问题。
ggplot(smr, aes(Fuel.Rate, Eng.Speed.Ave., color=Eng.Speed.Max.)) +
geom_point() +
labs(title=expression("Fuel Efficiency"~(alpha*Omega)),
color=expression(alpha*Omega), x=expression(Delta~price))
https://i.stack.imgur.com/e9Psf.png
此外,一些评论(截至目前尚未答复)询问在希腊字母后放置星号 (*)。 expression(alpha~"*")
有效,所以我建议尝试一下。
更多关于获得 Δ Price
的评论被问及,我发现实现这一目标的最直接方法是 expression(Delta~price))
。如果你需要在希腊字母之前添加一些东西,你也可以这样做: expression(Indicative~Delta~price)
这让你:
https://i.stack.imgur.com/nJUZy.png
不定期副业成功案例分享
substitute
,这也适用于expression
不起作用的地方,甚至允许其他格式,如italics
、bold
等。