4

For some reason, my interaction plots don't seem to show the greek symbols (latex) in R markdown (using R studio). The code I am using is reproduced below. Why are the expression() functions not working? Any suggestions?

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")))
eipi10
  • 91,525
  • 24
  • 209
  • 285
buzaku
  • 361
  • 1
  • 10

1 Answers1

0

For the title, wrap the whole thing in expression. For example, main = expression(paste("Interaction plot of ", mu[e], " f1")) or main = expression(Interaction~plot~of~mu[e]~f1).

For the trace.label, the expression is not being parsed properly. It looks like the problem is this line in the code for interaction.plot:

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

So trace.label is wrapped in paste which turns the expression back into a text string. For example:

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

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

As a workaround, you can modify the function to use trace.label as is. To do that, get the code for interaction.plot by typing interaction.plot in the console. Copy the code into a new R script file and assign the function a new name like my_interaction_plot. Then change the line above to this:

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

This change will result in expression(mu[e]) being parsed properly.

Now just use my_interaction_plot instead of interaction.plot like this:

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"))))
eipi10
  • 91,525
  • 24
  • 209
  • 285