如何在gomplot的geom_text_repel或geom_text标签中包含斜体文本?

时间:2017-01-08 02:47:15

标签: r text ggplot2 plotmath ggrepel

是否可以将部分斜体文本标签传递给ggplot?我已尝试使用expressionitalic命令(expression(paste(italic("some text")))),但这些命令无法传递到数据框中,因为命令的结果不是原子的。设置参数fontface = "italic"也是不够的,因为这会使整个标签斜体化,而不仅仅是标签中的一组选定字符。例如,我想在标签中使用一些斜体字的拉丁短语(例如“in vivo”中的“in vivo”)。

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 个答案:

答案 0 :(得分:3)

您可以使用parse = TRUE?plotmath个表达式(作为字符串)传递给geom_textgeom_text_repel。你必须将字符串重写为plotmath,但如果它不是太多,那就太糟糕了。

注意: ggrepel的CRAN版本有一个中断parse = TRUE的错误,但已在GitHub版本上修复。 ggplot2::geom_text工作正常。

# 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)

plot with partial italic label