Ich möchte Textlabels zu einem Diagramm hinzufügen, die sowohl fett als auch normale Schriftart für mehrere Etiketten enthalten, die in einem Vektor gespeichert sind.Wie kann ich einen Vektor von Etiketten mit Fettschrift und normaler Schrift auf einer Zeichnung anzeigen?
Während ich es für ein einzelnes Label geschafft habe (in der Beispieldarstellung unten grün dargestellt), scheiterte ich, wenn ich mehrere Labels habe, die ich mit einem einzigen Textanruf anzeigen möchte (rot in der Handlung).
Hier ist ein Beispiel, das die Handlung unten erstellt:
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")
Die Frage ist also: Wie kann ich den roten Text aussehen wie das Grün erhalten?
Danke, das funktioniert in der Tat. Dennoch wäre ich daran interessiert, eine Lösung mit lapply() zu sehen; oder zu verstehen, warum in meinem obigen Beispiel nicht funktioniert. Irgendjemand? – Stefan
Ich aktualisierte meine Antwort. 'lapply' funktioniert nicht, weil' labels' ein Zeichenvektor sein muss. "Lapply" erstellt jedoch eine Liste, so dass es nicht funktioniert. Ich habe das in 'sapply' geändert, was einen Zeichenvektor erzeugt und jetzt funktioniert es. – LyzandeR