首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ggplot2表达式中的混合表达式、纯文本和换行符

ggplot2表达式中的混合表达式、纯文本和换行符
EN

Stack Overflow用户
提问于 2018-04-16 09:58:19
回答 1查看 425关注 0票数 4

我正在尝试使用ggplot2创建一些标签/贴纸。我正在从源中提取标签的文本,并键入情节。我可以这样做:

代码语言:javascript
运行
复制
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,但是它扰乱了线宽。

如果我尝试单独注释,那么定位是困难的,因为labtxt1labtxt2的长度因不同的标签/贴纸而不同。

如何获得预期的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 10:21:14

你可以把文字包装在一个看不见的表格里,

代码语言:javascript
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49854480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档