首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点内部的DiagrammeR段落

节点内部的DiagrammeR段落
EN

Stack Overflow用户
提问于 2021-03-10 21:00:14
回答 1查看 754关注 0票数 1

我想知道如何在指定的宽度内将一串文本包装在节点中。

我知道我可以有表格A->B->C,但是对于我来说A,B和C几乎都是2-4行的段落。当然,我可以手动创建断线。

这是有用的,当你有两个或三个字,但不是真正的工作与段落。

有没有办法让标签表现得像一个文本区域,这样我就可以设置一个宽度,然后把所有我想要的文本,而不是手动打破线?如果是,是否也可以控制文本的对齐?

编辑:@CALUM成功了,但是将图表的方向改为“从左到右”,在“图形”的属性中添加'rankdir = LR‘会导致字体大小减小,增加“fontsize”属性并不能解决这个问题。

代码语言:javascript
复制
T1 <- 'El usuario detecta un problema y empieza a buscar información para entenderlo mejor.'
T2 <- 'Se considera todas las alternativas ofrecidas en el mercado.'
T3 <- 'Se efectúa la elección.'

T1 <- paste(stri_wrap(paste0(T1, "\\l"), width = 50, indent = 0, exdent = 0), collapse="\\l")
T2 <- paste(stri_wrap(paste0(T2, "\\l"), width = 50, indent = 0, exdent = 0), collapse="\\l")
T3 <- paste(stri_wrap(paste0(T3, "\\l"), width = 50, indent = 0, exdent = 0), collapse="\\l")

diagram <- glue("digraph boxes_and_circles {{
    graph[overlap = true, fontsize = 10, rankdir = LR]
    node [shape = box,
          fontname = Helvetica]
    A[label='{T1}'];
    B[label='{T2}'];
    C[label='{T3}'];
    A->B->C
}}
")

DiagrammeR::grViz(diagram)
EN

回答 1

Stack Overflow用户

发布于 2021-03-10 22:15:28

好的。这需要做几件事:

stringi的stri包装来拆分字符串粘贴(collapse=“\n”),以将这些拆分重新组合在一起

然后为了更好的测量胶水将字符串放入图表中

代码语言:javascript
复制
require(glue)
require(stringi)
require(diagrammeR)

# Load the long label into an object:
L <- 'A really very long text string label'
LEFT <- paste(
  stri_wrap(
    paste0(
      L,
      "\\l"), 
    width = 20, 
    indent = 0, 
    exdent = 0), 
   collapse="\\l")  # Use \\l to left align. add to end of text too.

CENTRE <- paste(stri_wrap(L, width = 20, indent = 0, exdent = 0), collapse="\n") # Use \n for centres

RIGHT <- paste(stri_wrap(paste0(L,"\\r"), width = 20, indent = 0, exdent = 0), collapse="\\r")  # Use \\r to right align, added to end of text too.

# Insert the string into the diagram in stead of {LEFT} {CENTRE} {RIGHT} 
# Could do similar with paste
diagram <- glue("digraph boxes_and_circles {{
    graph [overlap = true, fontsize = 10]
    node [shape = box,
          fontname = Helvetica]
    A[label='{LEFT}']; 
    B[label='{CENTRE}']; 
    C[label='{RIGHT}']; 
    A->B->C
}}
")
DiagrammeR::grViz(diagram)

# Draw the diagram
DiagrammeR::grViz(diagram)

编辑以添加左、中心和右对齐文本

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66572771

复制
相关文章

相似问题

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