如何在 ggplot2中使用希腊符号?

我的分类需要用希腊字母来命名。我使用的是 ggplot2,它可以很好地处理数据。不幸的是,我不知道如何把这些希腊符号放在 x 轴上(在刻度线上) ,也不知道如何让它们出现在图例中。有什么办法吗?

更新: 我看了一下 链接,然而,没有一个好的方法可以完成我想要做的事情。

148457 次浏览

下面是一个优秀的 wiki 的 链接,它解释了如何在 ggplot2中放入希腊符号。总而言之,以下是获取希腊符号的方法

  1. 文本标签: geom_textannotate中使用 parse = T
  2. Axis Labels: 使用 expression(alpha)获取希腊字母 alpha。
  3. 方面标签: facet中使用 labeller = label_parsed
  4. 图例标签: 在图例标签中使用 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

使用 expression(delta),其中“ Delta”表示小写的 δ和“ Delta”表示大写的 Δ

下面是希腊字母的完整列表:

Α α
Β β
Γ γ γ
Δδdelta
Something ε ε
Something ζ zeta
Something η eta
Θ θ θ
我不太确定
我是 κ Kappa
Λ λ λ
收到
Morning ν nu
赋予 ξ-xi
[拉丁语]
Π π
Φ ρ ρ
Σ σ sigma
有 τ τ τ
对话上升
Φ φ φ
Χ χ chi
Ψ ψ psi
Ω ω ω

编辑: 复制自注释,当与其他单词一起使用时,如: 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))

enter image description here

此外,一些评论(到目前为止还没有得到回答)询问关于在希腊字母后面加星号(*)的问题。expression(alpha~"*")可以,所以我建议你试试。

更多的评论被问到关于获得 Δ Price和我发现最直接的方式来实现这是 expression(Delta~price))。如果你需要在希腊字母之前添加一些东西,你也可以这样做: expression(Indicative~Delta~price):

enter image description here

最简单的解决方案: 使用 Unicode 字符

不需要 expression或其他软件包。
不确定这是否是 ggplot 的一个新特性,但它确实可以工作。 它还可以很容易地混合希腊文和普通文本(比如在刻度中添加“ *”)

只需在文本字符串中使用 unicode 字符即可。 似乎对我能想到的所有选择都很有效。 编辑: 以前它在 facet 标签中不起作用,这显然已经在某个时候修复了。

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"))

Reprex 软件包于2019-08-28年度创作(0.3.0版)