DiagrammeR / GraphViz - выравнивать текст узла, если текст узла является многострочной меткой замены - PullRequest
0 голосов
/ 12 февраля 2020

Я использую метки замещения (@@) с диаграммой диаграммы и синтаксиса Graphviz. Я видел предыдущие вопросы об обосновании меток узлов, таких как эта , когда метки представляют собой встроенный текст, но мне интересно, как обосновать текст узла, сгенерированный из многострочной метки замещения. Более конкретно, для метки в приведенном ниже воспроизводимом примере я хочу, чтобы столбец «main», то есть метки первого и третьего прямоугольника, оставался по центру, а метки многострочного узла, такие как крайний правый прямоугольник, выравнивались влево (значение а также подзначения). Поскольку я указываю разрывы строк в метках подстановки, я попытался использовать двойную обратную косую черту sh \ l вместо \ n без успеха. Кроме того, я хотел бы выделить заголовки (в воспроизводимом примере, первое значение, второе значение и строки третьего значения), но не выделять любые значения. Любая помощь будет принята с благодарностью. Спасибо!

library(DiagrammeR)
library(DiagrammeRsvg)

a <- 100
x <- 50
b <- 30
d <- 20


grViz("

                      digraph a_nice_graph {

                      node[fontname = Helvetica, shape = box, width = 4, fontcolor = darkslategray]
                      firstvalue[label = '@@1']
                      secondvalue[label = '@@2']
                      thirdvalue[label = '@@3']
                      blank[label = '', width = 0.01, height = 0.01]
                      { rank = same; blank secondvalue }
                      firstvalue -> blank [dir = none] 
                      blank -> secondvalue[minlen = 9]
                      blank -> thirdvalue
                      }
                      [1]: paste0('First value (n = ', a, ')')
                      [2]: paste0('Second value (n = ', a-x, ')\\nSubvalue = ', b, '\\nSubvalue = ', d, '')
                      [3]: paste0('Third value (n = ', x, ')')
                      ")


...