r plot text为要加粗的文本添加变量

insrf1ej  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(173)

在下面的例子中,变量包含字母a。但是legend中的legend只返回temp而不是粗体的a。如何让它像“应该”一样工作?

a <- 2
b <- 5
temp <- letters[1]
temp
plot(a,b)

legend("topleft", legend = c(as.expression(bquote(bold(get(temp)))),
                             as.expression(bquote(temp))))
kqlmhetl

kqlmhetl1#

从这里得出答案:using bold in mtext on string coming from vector element
为了让bquote计算一个变量,而不是简单地将其打印为文本,需要将术语 Package 在.()中,这将导致它在指定的环境(由where参数给定)中计算变量。

temp <- 'a'
e <- new.env()
assign('temp','b',envir = e)
plot(2,5)
legend("topleft",
       legend = c(as.expression(
           bquote(bold(temp))),                 # No .(), `temp` is text
           bquote(bold(.(temp))),               # eval `temp` in parent.env
           bquote(bold(.(temp)), where = e)))   # eval `temp` in envir "e"

?bquote的帮助中提到:
bquote将其参数括起来,除非在指定的where环境中计算 Package 在.()中的项

zvms9eto

zvms9eto2#

这两个回答帮助我找到了答案。我问了关于图例的问题。我使用terra包中的plot函数,结果在terra::plot中的图例选项中不起作用。但如果你在绘图中用相关坐标替换x和y,这段代码就起作用了。

text(x, y, cex = 1.5, (bquote(paste((bold(.(a)))))))

这看起来非常笨拙,但是为了清晰起见,试图在“a”后面的括号字符串中添加一个空格似乎行不通。

相关问题