4

出于某种原因,我的交互图似乎没有在 R markdown 中显示希腊符号(乳胶)(使用 R studio)。我正在使用的代码复制如下。为什么 expression() 函数不起作用?有什么建议么?

with(ba_results, interaction.plot(as.factor(f1), as.factor(f2), 
                                  y,
                                  type = "b",
                                  pch = c(18, 19, 24),
                                  fixed = TRUE,
                                  xlab = "Scale factor",
                                  ylab = "Mean Response",
                                  trace.label = expression(mu_e),
                                  main = paste("Interaction plot of", 
                                               expression(mu[e]), 
                                               "f1")))
4

1 回答 1

0

对于标题,将整个内容包裹在expression. 例如,main = expression(paste("Interaction plot of ", mu[e], " f1"))main = expression(Interaction~plot~of~mu[e]~f1)

对于trace.labelexpression没有被正确解析。看起来问题是代码中的这一行interaction.plot

text(xleg, ylim[2L] - 0.05 * yrng, paste("  ", trace.label), adj = 0)

So trace.labelis Wrappedpaste将表达式转换回文本字符串。例如:

expression(mu[e])
# expression(mu[e])

paste("  ", expression(mu[e]))
# "   mu[e]"

作为一种解决方法,您可以修改函数以trace.label按原样使用。为此,请通过在控制台中interaction.plot键入来获取代码。interaction.plot将代码复制到新的 R 脚本文件中,并为函数指定一个新名称,例如my_interaction_plot. 然后将上面的行更改为:

text(xleg, ylim[2L] - 0.05 * yrng, trace.label, adj = 0)

此更改将导致expression(mu[e])正确解析。

现在只需使用my_interaction_plot而不是interaction.plot这样:

with(ba_results, 
     my_interaction_plot(as.factor(f1), as.factor(f2), y, type = "b",
                         pch = c(18, 19, 24), fixed = TRUE,
                         xlab = "Scale factor", ylab = "Mean Response",
                         trace.label = expression(mu_e),
                         main = expression(paste("Interaction plot of ", mu[e], " f1"))))
于 2017-06-28T06:14:42.987 回答