将希腊字符和星号(*)添加到轴标题

问题描述 投票:3回答:2

我想在R中直方图的x轴上添加一个希腊字符。我可以单独或用帽子写出希腊字符,但问题是我需要这个字符带帽子和星号()一起。更具体地说,我想要帽子(phi ^)之类的东西。这是我做的:

x = rnorm(1000)
hist( x, nclass = 100, cex.lab=1.5, xlab = expression(hat(phi^*)), 
ylab="Frequency", main="", cex.axis=1.5 )

谢谢。

r label
2个回答
4
投票

那么使用ggplot2而不是base R.你可以使用latex2exp::TeX在轴标签中使用(某些)LaTeX表达式。

set.seed(2018)
x = rnorm(1000)

library(ggplot2)
library(latex2exp)

ggplot(data.frame(x = x), aes(x)) +
    geom_histogram(bins = 100) +
    theme_minimal() +
    xlab(TeX("$\\widehat{\\phi^*}$"))

enter image description here

您需要使用额外的反斜杠转义反斜杠并在$分隔符内包装数学表达式(就像在常规LaTeX内联数学中一样)。我使用\widehat{},但你也可以用hat{}代替。


3
投票

这是我找到的最好看的解决方案:

hist( x, nclass = 100, cex.lab=1.5, xlab = expression(hat(phi)~"*"), 
      ylab="Frequency", main="", cex.axis=1.5 )

enter image description here


为了得到这个明星,我不知道任何有基本情节功能的漂亮解决方案。我认为@Maurits Evers的方法是结果的复杂性和漂亮之间的最佳折衷。

但无论如何,这里有一个更“先进”(也许有点超过顶部,但很好......)的解决方案。它基于这篇博文:http://iltabiai.github.io/tips/latex/2015/09/15/latex-tikzdevice-r.html

要使其工作,您需要安装tikzDevice包。

首先,加载包并创建数据集。

library(tikzDevice)
library(ggplot2)
dat <- data.frame(x = rnorm(1000))

然后创建一个TeX文件,其中包含“tikz”语言中R图的“翻译”。

tikz(file = "plot_test.tex", width = 5, height = 5, standAlone = TRUE)
ggplot(dat, aes(x = x)) + 
  geom_histogram(color="white") + theme_bw() +
  labs( x = "$\\widehat{\\phi^*}$")
dev.off()

然后,您可以直接将LaTeX代码复制或调用到您自己的LaTeX文档中(然后不需要standAlone=TRUE参数),或者您可以使用这两个非常有用的函数来生成pdf版本并查看结果。

tools::texi2dvi("plot_test.tex", pdf=TRUE)
system(paste(getOption('pdfviewer'), "plot_test.pdf"))

TikZ result

© www.soinside.com 2019 - 2024. All rights reserved.