gpt4 book ai didi

r - 是否可以仅更改 1 个方面标题的对齐方式

转载 作者:行者123 更新时间:2023-12-03 18:13:41 27 4
gpt4 key购买 nike

假设我有一个像这样的多面 ggplot:

data(iris)
ggplot(iris, aes(x = Petal.Width, y = Sepal.Length)) +
facet_grid(. ~ Species) +
geom_point()
enter image description here
问题:
是否可以仅将第一个方面标签(“setosa”)与左侧对齐,但将其他方面保持在中央?
我没有任何运气直 ggplot ,所以我尝试转换为 gtable(下面的代码),我可以看到我可能需要修改的元素是 tableGrb #13 - strip-t-1,但我不知道该怎么做。我尝试更改 gt$layout$lgt$layout$r值为 4(原为 5),但这会将标题完全移出小平面。
pl <- ggplot(iris, aes(x = Petal.Width, y = Sepal.Length)) +
facet_grid(. ~ Species) +
geom_point()
gt <- ggplotGrob(pl)

gt$layout[gt$layout$name == 'strip-t-1', c('l', 'r')] <- c(4, 4) # my attempt
grid.newpage()
grid.draw(gt)
有谁知道这是否可能?

最佳答案

你有正确的想法,但不是正确的地点。基本上你需要做这样的事情:

library('ggplot2')
library('grid')

data(iris)
pl <- ggplot(iris, aes(x = Petal.Width, y = Sepal.Length)) +
facet_grid(. ~ Species) +
geom_point()
gt <- ggplotGrob(pl)

gt$grobs[[13]]$grobs[[1]]$children$strip.text.x.top..titleGrob.186$children$GRID.text.184$x <- unit(0.1, 'npc')
grid.newpage()
grid.draw(gt)
enter image description here
但这对你不起作用......自从 titleGrob.xxx之后它甚至不会对我第二次起作用。和 GRID.text.xxx每次使用时更改 gt <- ggplotGrob(pl)因此,请尝试不同的方法并了解您所指出的需要编辑的位置(在第一个 strip 中):
gp <- ggplotGrob(pl)
grid.ls(grid.force(gp))

# layout
# background.1-13-13-1
# panel-1-1.8-5-8-5
# ...
# strip-t-1.7-5-7-5 <- here
# strip.1-1-1-1
# strip.background.x..rect.533
# strip.text.x.top..titleGrob.525
# GRID.text.523
# strip-t-2.7-7-7-7
# strip.1-1-1-1
# strip.background.x..rect.533
# strip.text.x.top..titleGrob.528
# GRID.text.526
# strip-t-3.7-9-7-9
# strip.1-1-1-1
# strip.background.x..rect.533
# strip.text.x.top..titleGrob.531
# GRID.text.529
# axis-t-1.6-5-6-5
# ...
# title.3-9-3-5
# caption.11-9-11-5
# tag.2-2-2-2
您可以使用 gPath在不知道 GRID.text.xxx 的情况下获取路径提前。请注意,在您的示例中,我们可以只编辑第一个 GRID.text如果 global = FALSE 它将起作用,即,如果 global = TRUE ,他们都会改变。
g1 <- editGrob(
grid.force(gp),
gPath('GRID.text'), grep = TRUE, global = FALSE,
x = unit(0.25, 'npc')
)
grid.newpage()
grid.draw(g1)
enter image description here
但是,您可能需要一个非常具体的路径,因此请遵循 strip-t-1到您的 GRID.text (注意 global = TRUE ,它只影响一个 strip )
g2 <- editGrob(
grid.force(gp),
gPath('strip-t-1', 'strip', 'strip', 'GRID.text'), grep = TRUE, global = TRUE,
x = unit(0.75, 'npc')
)
grid.newpage()
grid.draw(g2)
enter image description here

关于r - 是否可以仅更改 1 个方面标题的对齐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63912586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com