Я использую метки замены (@@) с синтаксисом диаграмм и Graphviz. Я видел предыдущие вопросы об обосновании меток узлов, таких как этот, когда метки встроенный текст, но мне интересно, как оправдать текст узла, сгенерированный из многострочной метки замены. В частности, для метки в воспроизводимом примере ниже я хочу, чтобы «основной» столбец, означающий метки первого и третьего прямоугольника, оставался по центру, а метки многострочных узлов, такие как крайний правый прямоугольник, были выровнены по левому краю (значение а также подзначения). Поскольку я указываю разрывы строк в метках подстановки, я безуспешно пытался использовать двойную обратную косую черту \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, ')')
")