我的分类需要用希腊字母命名。我正在使用ggplot2
,它可以很好地与数据配合使用。不幸的是,我无法弄清楚如何在x轴上(在刻度处)放置那些希腊符号,并使它们出现在图例中。有没有什么办法可以做到这一点?
更新: 我看了一下链接,但是没有描述实现我想要做的事情的好方法。
geom_text
或 annotate
中使用 parse = T
。expression(alpha)
来获取希腊字母 alpha。facet
中使用 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
。
substitute
,这个方法可以在 expression
不起作用的地方使用,并且甚至允许其他格式化,如 斜体
,粗体
等。 - Sam最简单的解决方案:使用Unicode字符
不需要任何表达式或其他软件包。
不确定这是否是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"))
创建于2019年8月28日,使用reprex package(v0.3.0)
expression
或bquote
形成的对象类型 - 你最终得到一个字符对象,可以像使用任何其他字符对象一样使用它。 - GMSLdevice = cairo_pdf
。我在这里使用的是Linux,显然这是默认设备的问题。 - Patafikss使用expression(delta)
获取小写的δ,使用'Delta'获取大写的Δ
。
以下是完整的希腊字符列表:
Α α alpha(阿尔法)
Β β beta(贝塔)
Γ γ gamma(伽马)
Δ δ delta(德尔塔)
Ε ε epsilon(伊普西隆)
Ζ ζ zeta(捷塔)
Η η eta(伊塔)
Θ θ theta(西塔)
Ι ι iota(约塔)
Κ κ kappa(喀帕)
Λ λ lambda(兰姆达)
Μ μ mu(缪)
Ν ν nu(纽)
Ξ ξ xi(克西)
Ο ο omicron(奥密克戎)
Π π pi(派)
Ρ ρ rho(柔)
Σ σ sigma(西格玛)
Τ τ tau(陶)
Υ υ upsilon(宇普西隆)
Φ φ phi(斐)
Χ χ chi(卡希)
Ψ ψ psi(普西)
Ω ω omega(欧米茄)
编辑:从评论中复制,当与其他单词一起使用时,可以像这样使用:expression(Delta * "价格")
Δprice
的标签?expression(Deltaprice)
不起作用,expression(Delta price)
也不行。 - jf328xlab(expression(Delta)price)
会报错。 - jf328你不需要使用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))
此外,一些评论(截至目前尚未回答)询问如何在希腊字母后面加上星号(*)。expression(alpha~"*")
可以实现,建议尝试。
更多评论询问如何获得Δ Price
,我认为最直接的方法是expression(Delta~price))
。如果你需要在希腊字母之前添加一些内容,也可以这样做:expression(Indicative~Delta~price)
,会得到下面的结果:
expression
函数的讨论:https://dev59.com/znM_5IYBdhLWcg3wZSPX - DrewConwaylatex2exp
包:https://cran.r-project.org/web/packages/latex2exp/vignettes/latex2exp.html - Enrique Pérez Herrero