首页 > 解决方案 > ggplot2标签中的Concat数学符号和字符串-R,LaTex解决方案?

问题描述

我试图用 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() 是唯一输入,它们都可以正常工作,但是当我使用 paste 返回轴标签的其余部分时,不会输出希腊符号。我相信这是由于每个对象的不同 class() 。或者,如果有一种方法可以在标签中编译 LaTex 来解决我的 x 轴和 y 轴问题。

这是我的图表到目前为止的样子...... 在此处输入图像描述

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

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

标签: rggplot2labellatexconcatenation

解决方案


latex2exp软件包可能是最简单的:

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

然后使用 as... + ylab(ylab.fig2)来构建情节。


推荐阅读