R 网格包:如何创建具有多种颜色的 textGrob 并将其定位在视口的中心
R grid package: How to create a textGrob with multiple colors and position it in the center of a viewport
我需要如下内容,但字符串中的每个单词颜色不同:
library(grid)
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grid.text(label = 'Hello, World!')
我试图为每个片段创建单独的 grob,然后将它们组合在一起,但我不知道如何将结果定位在视口的中心:
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grouped_grobs <-
gList(textGrob(label = 'Hello',
x = unit(0.0, 'npc'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='red')),
textGrob(label = ',',
x = unit(1, 'strwidth', data = 'Hello'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='black')),
textGrob(label = 'World',
x = unit(1, 'strwidth', data = 'Hello, '),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='blue')),
textGrob(label = '!',
x = unit(1, 'strwidth', data = 'Hello, World'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='black')))
grid.draw(grouped_grobs)
我尝试测量 gList 的宽度,我也尝试使用 gTree,但不知何故我被困在这个看似简单的任务上。
在此先感谢您的任何帮助!
使用 gridtext
包可以更轻松地绘制彩色文本。例如
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grid.draw(gridtext::richtext_grob(text = '<span style="color:red">Hello</span>, <span style="color:blue">World</span>!',
x = unit(0.5, 'npc'),
y = unit(0.5, 'npc'),
hjust=.5))
会return
我需要如下内容,但字符串中的每个单词颜色不同:
library(grid)
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grid.text(label = 'Hello, World!')
我试图为每个片段创建单独的 grob,然后将它们组合在一起,但我不知道如何将结果定位在视口的中心:
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grouped_grobs <-
gList(textGrob(label = 'Hello',
x = unit(0.0, 'npc'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='red')),
textGrob(label = ',',
x = unit(1, 'strwidth', data = 'Hello'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='black')),
textGrob(label = 'World',
x = unit(1, 'strwidth', data = 'Hello, '),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='blue')),
textGrob(label = '!',
x = unit(1, 'strwidth', data = 'Hello, World'),
y = unit(0.5, 'npc'),
just = c('left', 'center'),
gp = gpar(col='black')))
grid.draw(grouped_grobs)
我尝试测量 gList 的宽度,我也尝试使用 gTree,但不知何故我被困在这个看似简单的任务上。
在此先感谢您的任何帮助!
使用 gridtext
包可以更轻松地绘制彩色文本。例如
grid.newpage()
pushViewport(viewport(width = unit(5, 'cm'), height = unit(5, 'cm')))
grid.rect()
grid.draw(gridtext::richtext_grob(text = '<span style="color:red">Hello</span>, <span style="color:blue">World</span>!',
x = unit(0.5, 'npc'),
y = unit(0.5, 'npc'),
hjust=.5))
会return