Смешивание выражения, простого текста и новой строки в выражении ggplot2
Я пытаюсь создать ярлыки / наклейки, используя ggplot2
, Я вытягиваю текст для меток из источника и привязываю к графику. Я могу сделать это следующим образом:
labtxt1 <- c("This text should be bold", "This text should also be bold", "Another text to be bold")
labtxt1 <- strwrap(labtxt1, width = 20)
labtxt2 <- c("This text should not be bold", "This text should also not be bold", "Another text to be plain")
labtxt2 <- strwrap(labtxt2, width = 20)
library(ggplot2)
library(Hmisc)
labtxt <- c(labtxt1, labtxt2)
labtxt <- paste(labtxt, collapse = "\n", sep = "")
labtxt <- escapeRegex(labtxt)
ggplot(x=1, y = 1) +
annotate("text", x = 0.5, y = 0.5,
label = labtxt,
colour = "red", parse = F, lineheight = 0.8)
Как теперь сделать текст в labtxt1
выделять жирным шрифтом вместе с текстом labtxt2
как простое поддержание оправдания и linewidth
?
Я пробовал с expression
с \n
, который портит оправдание, и с atop
, но который портит ширину линии.
Если я попытаюсь аннотировать отдельно, то позиционирование будет трудным, поскольку длина labtxt1
а также labtxt2
варьируется для разных этикеток / наклеек.
Как получить желаемый результат?
1 ответ
Решение
Вы могли бы обернуть текст в невидимую таблицу,
library(ggplot2)
library(gridExtra)
label <- "plain text\nbold('bold line')\nitalic('italic line')\nplain again"
disect <- strsplit(label, "\\n")[[1]]
mytheme <- ttheme_minimal(core = list(fg_params = list(parse=TRUE, col="red",
hjust=0, x=0.1)))
tg <- tableGrob(as.matrix(disect), theme=mytheme)
ggplot(x=1, y = 1) +
annotation_custom(tg)