R 如何在绘图上显示粗体和普通字体的标签向量?

R 如何在绘图上显示粗体和普通字体的标签向量?,r,vector,text,plot,fonts,R,Vector,Text,Plot,Fonts,我想将文本标签添加到一个包含粗体和普通字体的绘图中,用于存储在向量中的多个标签 虽然我设法对单个标签(在下面的示例图中显示为绿色)执行此操作,但当我有多个标签要通过单个文本调用显示时(在图中显示为红色),我失败了 下面是一个创建下图的示例: plot(0,ylim=c(1,10),xlab="",ylab="",xaxt="n",yaxt="n") mylabels <- c("Some text

我想将文本标签添加到一个包含粗体和普通字体的绘图中,用于存储在向量中的多个标签

虽然我设法对单个标签(在下面的示例图中显示为绿色)执行此操作,但当我有多个标签要通过单个文本调用显示时(在图中显示为红色),我失败了

下面是一个创建下图的示例:

plot(0,ylim=c(1,10),xlab="",ylab="",xaxt="n",yaxt="n")

mylabels <- c("Some text in bold: normal text", "Some other text in bold: more normal text")
text(x=rep(1, 2), y=c(10,9), labels=mylabels)

# change labels to show bold font before the colon and normal behind
mylabels.bold <- gsub("$","')", gsub(":", "'), ':", gsub("^","paste(bold('", mylabels)))
#> mylabels.bold
#[1] "paste(bold('Some text in bold'), ': normal text')"           
#[2] "paste(bold('Some other text in bold'), ': more normal text')"

# this works
text(x=1, y=8, labels=parse(text=mylabels.bold[1]), col="green")

# this doesn't
parsetext <- function(x) { parse(text=x) }
text(x=rep(1, 2), y=c(7,6), labels=lapply(mylabels.bold,parsetext), col="red")
plot(0,ylim=c(1,10),xlab=“”,ylab=“”,xaxt=“n”,yaxt=“n”)

mylabels这是一种方法。因此,您可以在外部循环以逐个添加标签,而不是尝试在labels参数中循环

plot(0, ylim=c(1,10), xlab="", ylab="", xaxt="n", yaxt="n")
xs <- rep(1, 2)
ys <- c(6, 7)
for (i in seq_along(mylabels.bold)) {
  text(x = xs[i], y = ys[i], labels = parse(text=mylabels.bold[1]), col = "red")
}
plot(0,ylim=c(1,10),xlab=“”,ylab=“”,xaxt=“n”,yaxt=“n”)

谢谢,这确实有效。不过,我还是有兴趣看到lapply()的解决方案;或者理解为什么Lappy在我上面的例子中不起作用。有人吗?我更新了我的答案
lappy
不起作用,因为
labels
参数必须是字符向量。但是,
lappy
创建了一个列表,因此它不起作用。我把它改成了
sapply
,它产生了一个字符向量,现在可以工作了。
plot(0,ylim=c(1,10),xlab="",ylab="",xaxt="n",yaxt="n")
parsetext <- function(x) { parse(text=x) }
text(x=rep(1, 2), y=c(7,6), labels=sapply(mylabels.bold,parsetext), col="red")