gpt4 book ai didi

r - 如何使用不同的 y 轴文本长度获得相同的面板宽度

转载 作者:行者123 更新时间:2023-12-01 13:47:37 25 4
gpt4 key购买 nike

我正在通过一个循环绘制数百个图。每个图都有不同的参数,这导致 y 轴标签的范围从一些图中的 0.1-0.9 到其他图中的 100-1000。现在,绘制它们时,绘图的总大小保持不变,这意味着当 y 轴标签较长时,y 轴的位置向右移动,或者当标签很短。

我想固定所有地 block 的面板宽度。本质上,如果标签很短,y 轴标题的左侧会有空白。

我的问题与此有些相似,但我对 gtable 的了解不足,无法根据需要修改解决方案。 How achieve identical facet sizes and scales in several multi-facet ggplot2 graphics?

玩具示例:

df <- data.frame(x = c(rnorm(10, 0.1, 0.1), rnorm(10, 1000, 100)), 
y = c(rnorm(10, 0.1, 0.1), rnorm(10, 10000, 100)),
name = c(rep(1, 10), rep(2, 10)))

for(i in 1:2){

p <- ggplot(df[df$name == i,]) +
geom_point(aes(x = x, y = y))

filename <- paste("fig", i, ".jpg", sep = "")
jpeg(filename, width = 6.5, height = 5.5, units = "in", pointsize = 12, quality = 100, res = 500)
print(p)
dev.off()
}

最佳答案

您可以使用完整数据集生成一个虚拟图“p”,使用“g=ggplotGrob(p)”将其转换为 gtable,存储其宽度“w=g$widths”,并将每个图存储在循环将 gtable 的宽度替换为“w”。

p <- ggplot(df) +
geom_point(aes(x = x, y = y))
g <- ggplotGrob(p)
w <- g$widths

pdf("test.pdf")
for(i in 1:2){

p <- ggplot(df[df$name == i,]) +
geom_point(aes(x = x, y = y))
g <- ggplotGrob(p)
g$widths <- w
grid::grid.newpage()
grid::grid.draw(g)
}
dev.off()

enter image description here

关于r - 如何使用不同的 y 轴文本长度获得相同的面板宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694632/

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