2

我想将一个图例添加到一个图例中,其中只有一个图例名称是斜体的。我plot()在base R中使用。

  • 但是,我需要斜体行来包含可变数字,所以我使用bquote.

我试过的不起作用:

  a <- 2 ; b <- 5
  plot(a,b)
  l1 <- bquote(Italic ~ .(a) + .(b))
  l2 <- bquote(a + b)
  legend(x='topright',legend = bquote(italic(.(l1))))
  legend(x='topleft',legend = c(bquote(italic(.(l1))),l2))
  • 请注意,当我将表达式单独保留(右图例)时,它会正确斜体。但是,当我为其他图例行添加文本时,它会搞砸(左图例)。

在此处输入图像描述

我该如何正确地做到这一点?

注意:我宁愿有一个不需要多次调用legend().

4

2 回答 2

3

您应该使用as.expression将所有内容强制转换为表达式对象。

a <- 2
b <- 5
plot(a,b)
legend("topleft", legend = c(as.expression(bquote(italic("Italic: "*.(a)*" + "*.(b)))),
    as.expression(bquote("Non Italic: "*.(a)*" + "*.(b)))) )

修改您的示例

a <- 2
b <- 5
plot(a,b)
l1 <- bquote(Italic ~ .(a) + .(b))
l2 <- bquote(a + b)
legend("topleft", legend =  c(as.expression(bquote(italic(.(l1)))),
                            as.expression(bquote(.(l2))) ))
于 2017-03-28T21:08:55.270 回答
2

你可以使用text.font = 3,说:

legend(x='topleft',legend = c(bquote((.(l1))),l2), text.font=c(3,1))
于 2017-03-28T20:56:27.260 回答