如何将数学符号添加到等高线标签

How to add math symbols to contour label

我似乎无法将数学符号传递给等高线标签。这可能吗?

示例:

image(volcano)
contour(volcano, level=150, add=TRUE, label = "150") # works
contour(volcano, level=120, add=TRUE, label = expression(alpha)) # doesn't work
contour(volcano, level=110, add=TRUE, label = bquote(alpha)) # doesn't work
text(0.5,0.5, labels = bquote(alpha == .(120))) # works
text(0.2,0.5, labels = expression(paste(alpha, "= 150"))) # works

这是一个解决方案:

image(volcano);
levels <- c(150, 120, 110);
for (i in 1:length(levels)) {
    contour(
        volcano, add = TRUE,
        level = levels[i], 
        label = sprintf("a = %i", levels[i]), 
        vfont = c("sans serif symbol", "plain"), labcex = 1);
}

这里的关键是使用 vfont 强制使用 Hershey 矢量字体而不是当前的字体系列。然后,您可以使用 "HersheySansSymbol" 字体系列将 "a" 排版为“α”,方法是使用 contour 函数参数 vfont = c("sans serif symbol", "plain")。它有点隐藏,但可以在 ?Hershey 中找到有关 Hershey 字体的更多详细信息。

PS。您还可以使用带有 vfont = c("serif symbol", "bold") 的衬线粗体字体。