问题
Is it possible to pass partially italicized text labels into ggplot? I have tried using the expression
and italic
commands (expression(paste(italic("some text")))
), but these cannot be passed into a data frame because the result of the commands is not atomic. Setting the parameter fontface = "italic"
also doesn't suffice, since this italicizes the entire label, rather than just a select set of characters in the label. For instance, I would like some necessarily italicized Latin phrases to be italicized in a label (such as "in vivo" in "in vivo point").
library(ggplot)
library(ggrepel)
df <- data.frame(V1 = c(1,2), V2 = c(2,4), V3 = c("in vivo point","another point"))
ggplot(data = df, aes(x = V1, y = V2)) + geom_point() + geom_text_repel(aes(label = V3))
回答1:
You can use parse = TRUE
to pass ?plotmath
expressions (as strings) to geom_text
or geom_text_repel
. You'll have to rewrite the strings as plotmath, but if it's not too many it's not too bad.
Note: The CRAN version of ggrepel
has a bug that breaks parse = TRUE
, but it has been fixed on the GitHub version. ggplot2::geom_text
works fine.
# devtools::install_github('slowkow/ggrepel')
df <- data.frame(V1 = c(1,2), V2 = c(2,4),
V3 = c("italic('in vivo')~point", "another~point"))
ggplot(data = df, aes(x = V1, y = V2, label = V3)) +
geom_point() +
geom_text_repel(parse = TRUE)
来源:https://stackoverflow.com/questions/41528953/how-do-i-include-italic-text-in-geom-text-repel-or-geom-text-labels-for-ggplot