ggplot2标签中的Concat数学符号和字符串-R

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

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

这是我到目前为止的图形...enter image description here

总体上,我想通过x和y轴标签完成三件事:1)带有文本的Concat希腊字母。2)将粗体文本放置在标签内(仅P(z)中的z矢量将为粗体)。3)在我的文字上放置“ i”下标。

r ggplot2 label latex concatenation
2个回答
0
投票

latex2exp包可能是最简单的:

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

然后用作... + ylab(ylab.fig2)构建图。


0
投票

或使用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))

“”

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