如何在DiagrammeR中为节点添加带数字格式化的分级标签?
在DiagrammeR中实现差异化字号的主/子节点标签
完全可以实现你要的效果,核心是借助DiagrammeR对HTML标签的支持,分别定义主、子标签的字号,同时用R的函数完成数字千分位格式化并调用数据框中的数值。
实现示例代码
library(DiagrammeR) # 示例数据框(替换成你的实际数据) your_data <- data.frame(metric_value = sum(iris$Sepal.Length)*100) # 定义主标签字号X main_font_size <- 16 grViz(" digraph test { graph [] node [shape = box] # 使用HTML标签定义带不同字号的主、子标签,shape=plaintext确保样式正常渲染 A [label = '@@1', shape = plaintext] B [label = 'BarFoo'] A -> B } [1]: paste0('<font size=\"', main_font_size, '\">Main Heading</font><br>', '<font size=\"', main_font_size*0.5, '\">', format(your_data$metric_value, big.mark = ','), '</font>') ")
关键细节说明
- 字号控制:通过HTML的
<font>标签分别指定主标签字号(main_font_size)和子标签字号(main_font_size*0.5),<br>标签实现换行分隔主、子标签。 - 千分位格式化:用base R的
format()函数,通过big.mark = ','参数将数字转为千分位格式;如果习惯更简洁的写法,也可以用scales::comma(your_data$metric_value)(需要先加载scales包)。 - 样式兼容:给节点设置
shape = plaintext能避免默认box形状的样式干扰,让HTML格式的标签正常显示。
内容的提问来源于stack exchange,提问作者TheGoat
相关产品推荐
相关产品推荐

