【问题标题】:Left align the y labels of separate plots (ggplot)左对齐单独图的 y 标签(ggplot)
【发布时间】:2016-11-28 20:47:54
【问题描述】:

我有几个数据集共享相同的 x 轴,但它们的 y 轴相差几个数量级。出于这个原因,y 轴上的标签是可变大小的,当使用 ggplot 绘图时,x 轴变得不对齐。为了使我的绘图具有可比性,我希望所有 x 轴在最终绘图中具有相同的长度。这是一个相当简单的过程,其中facetting and grids can be used (or other options too)。但是,此过程意味着聚合所有图并将它们发送到相同的 png 或 eps 文件。我有几个原因(超出了帖子的范围)将每个图存储在自己的 png 中。因此,为了保持图的可比性,我必须找到一种方法来强制它们在图像的左边框和标记 y 轴的线之间具有相同的空间。

我的猜测是用空格“填充”标签,使它们都具有相同数量的字符可以解决问题,但它没有解决。我也试过改变 point.margin 无济于事。有人知道如何实现这一目标吗?

library(stringr)
library(ggplot2)
y1 <- seq(1,100,by=1)
y2 <- seq(1,1000000,by=10000)
x <- seq(1,100,by=1)
data <- data.frame(x,y1,y2)

m1 <- ggplot(data=data,aes(x=x,y=y1)) + geom_line() +
        scale_y_continuous(labels=function(label) str_pad(label,width=20,side="right"))
m11 <- m1 + theme_bw() + theme(panel.border = element_blank(), panel.grid.major= element_blank(), panel.grid.minor= element_blank(),axis.line=element_line(colour="black"),axis.text.x=element_text(size=12),axis.text.y=element_text(size=12))
m2 <- ggplot(data=data,aes(x=x,y=y2)) + geom_line() + 
        scale_y_continuous(labels=function(label) str_pad(label,width=20,side="right"))
m21 <- m2 + theme_bw() + theme(panel.border = element_blank(), panel.grid.major= element_blank(), panel.grid.minor= element_blank(),axis.line=element_line(colour="black"),axis.text.x=element_text(size=12),axis.text.y=element_text(size=12))

png("m1.png")
  m11
dev.off()
png("m2.png")
  m21
dev.off()

编辑:

【问题讨论】:

  • 尝试搜索set_panel_size
  • @baptiste 我试过你的建议,还没有成功。检查上面的编辑。

标签: r ggplot2


【解决方案1】:

我找到了一个似乎可以解决问题的解决方案。

首先,将ggplot对象转换成gtables。

g1 <- ggplot_gtable(ggplot_build(m11))
g2 <- ggplot_gtable(ggplot_build(m21))

然后,找到最大的宽度并使用它,然后替换其余图中的宽度。

maxWidth = unit.pmax(g1$widths[2:3], g2$widths[2:3])
g1$widths[2:3] <- maxWidth
g2$widths[2:3] <- maxWidth

最后,使用 grid.draw 将您的绘图打印到您的 png 设备中。

png("m1.png")
grid.draw(g1)
dev.off()

png("m2.png")
grid.draw(g2)
dev.off()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2015-08-11
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多