如何在基础R图中仅使一个图例名称为斜体?

时间:2017-03-28 20:41:04

标签: r string plot legend font-style

我想在图中添加一个图例,其中只有一个图例名称为斜体。我在基地R中使用plot()

  • 但是,我需要使用斜体线来包含可变数字,因此我使用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))
  • 请注意,当我单独留下表达式(RIGHT LEGEND)时,它会正确地显示斜体。但是,当我为其他图例线添加文本时,它会混乱(左图)。

enter image description here

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

注意:我宁愿拥有需要多次调用legend()的解决方案。功能

2 个答案:

答案 0 :(得分: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))) ))

答案 1 :(得分:2)

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

legend(x='topleft',legend = c(bquote((.(l1))),l2), text.font=c(3,1))