如何将数学符号添加到等高线标签
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")
的衬线粗体字体。
我似乎无法将数学符号传递给等高线标签。这可能吗?
示例:
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")
的衬线粗体字体。