在 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))
我试图用 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))