在 ggplot2 标签中连接数学符号和字符串 - R,LaTex 解决方案?

Concat math symbols and strings in ggplot2 labels - R, LaTex Solution?

我试图用 Theta 希腊符号和 P(z) 用逗号分隔我的图表的 y 轴。此外,我很想在 x 轴上标记 Q(z_i) ,其中 i 是下标。我尝试了几种不同的方法..

string <- ", P(z)"
thet <- bquote(theta)
ylab.fig2 <- paste(thet, string, sep = "")

并在 expression(theta) 中做了类似的事情。我在我的 ggplot ylab(fig.2) 中使用 ylab.fig2 作为输入。

new <- ggplot(data = data.frame(x=0), aes(x=x)) + 
  stat_function(fun=Pz.eq, aes(colour="P(z)")) +
  stat_function(fun=bid1, aes(colour="Bid Curve: House 1")) +
  stat_function(fun=bid2, aes(colour="Bid Curve: House 2")) +
  stat_function(fun=bid3, aes(colour="Bid Curve: House 3")) +
  xlim(0,20) + ylim(0,6) +
  xlab("Q(z_i)") + ylab(ylab.fig2) +
  ggtitle("Figure 2: Property Choice Per Household") +
  theme(panel.grid = element_blank(),
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank(),
        legend.title = element_blank(),
        plot.title = element_text(hjust=0.5)) +
  scale_colour_manual("Groups", 
                      values = c("darkseagreen", "darkkhaki", "darkslategray3", "firebrick")) 

如果 bquote() 和 expression() 是唯一输入,它们都可以正常工作,但是当我使用粘贴到 return 轴标签的其余部分时,希腊符号不会输出。我相信这是由于每个对象的 class() 不同。或者,如果有一种方法可以在标签中编译 LaTex 来解决我的 x 轴和 y 轴问题。

这是我的图表到目前为止的样子...

总的来说,我试图用 x 轴和 y 轴标签完成三件事: 1)将希腊字母与文本连接起来。 2) 将粗体文本放在标签内(只有 P(z) 中的 z 向量会是粗体)。 3) 在我的文本上放置 'i' 下标。

虽然在我寻找使用 LaTex 的解决方案之前已经发布了有关希腊字母的问题,但我可以使用的不仅仅是数学符号。使用 LaTex 代码将使我能够解决问题 2 和 3,而不仅仅是问题 1。

latex2exp 包可能是最简单的:

library(latex2exp)
string <- ", P(z)"
thet <- "$\theta$"
ylab.fig2 <- TeX(paste(thet, string, sep = ""))

然后使用 as ... + ylab(ylab.fig2) 构建绘图。

或者使用 bquote 和表达式:

library(ggplot2)
i=2
f <- bquote(expression(theta * ", " * P(bold(z))))
g <- bquote(expression(Q(z[.(i)])))

ggplot(mtcars, aes(x=hp, y=wt)) + geom_point()+
    ylab(eval(f))+
    xlab(eval(g))