来自名称向量的斜体图例标题

Legend title in italic from a vector of names

我有一个具有不同物种名称的载体。 例如:

sp_names<-c("sp1","sp2","sp3")

我必须为每个物种制作一张地图,并且我需要在图例标题中以 斜体 书写每个物种名称。在 Whosebug 上搜索我发现了使用 susbtitute 的建议。我试过这样:

legend(title=substitute(italic(sp_names), list(sp_names=sp_names[1])),
       "left",
       pch=21,col="black",pt.bg="darkgreen",
       legend = "Registro de ocorrência", 
       cex = 0.7,
       bty = "n")

但是我遇到了这个错误:

Error in legend(title = substitute(italic(title_leg), list(title_leg = title_leg[1])),  : 
  invalid 'title'

你能帮帮我吗? 谢谢

根据?legend帮助页面,title=参数必须是

a character string or length-one expression giving a title to be placed at the top of the legend. Other objects will be coerced by as.graphicsAnnot.

并且您正试图传入一个 "call" 对象。您可以使用 as.expression()

强制调用表达式
legend(title=as.expression(substitute(italic(sp_names), list(sp_names=sp_names[1]))),
       "left",
       pch=21,col="black",pt.bg="darkgreen",
       legend = "Registro de ocorrência", 
       cex = 0.7,
       bty = "n")