在R图的图例文本中使用子/上标和特殊字符

时间:2013-03-08 07:31:44

标签: r plot special-characters legend plotmath

我为多个数据集生成一个图。每个数据集都应该得到它自己的图例,它可能包含希腊字母,plotmath符号或sub和superscrition。我想在循环中生成图例文本。

如果只有一个图例文字,Bquote工作正常。如果我尝试添加附加的传奇文本,那么plotmath-commads会丢失,...

x <- 0:10
y1 = x * x
y2 = x * 10

plot (1,1, type="n", xlab=bquote(Omega), ylab="Y", las=1, xlim=range(x), ylim=range(y1, y2))
lines(x, y1, col=1, pch=1, type="b")
lines(x, y2, col=2, pch=2, type="b")

# generate legend texts (in a loop)
legend_texts = c(
  bquote(Omega^2)
  , bquote(Omega%*%10)
)
# Using a single bquote works fine:
#legend_texts = bquote(Omega^2)
#legend_texts = bquote(Omega%*%10)

legend(
  "topleft"
  , legend = legend_texts
  , col = c(1:2)
  , pch = c(1:2)
  , lty = 1
  )

2 个答案:

答案 0 :(得分:6)

试试这个:

 legend_texts = expression(
   Omega^2, Omega*10)

 legend(
   "topleft"
   , legend = legend_texts
   , col = c(1:2)
   , pch = c(1:2)
   , lty = 1
   )

我无法确定您是想要Omega^10还是Omega*10还是Omega%*%10,但它们都会产生可接受的plotmath表达式。

enter image description here

答案 1 :(得分:4)

更改&#34; legend_texts&#34;到:

# generate legend texts (in a loop)
legend_texts = c(
  as.expression(bquote(Omega^2))
  , as.expression(bquote(Omega%*%10))
)

?legend的帮助页面中,&#34;传奇&#34;参数描述为:

  

字符或表达向量。长度≥1出现在图例中。其他对象将被as.graphicsAnnot强制执行。

输出:

enter image description here