R在多图上设置图形之间的空间

发布于 2024-12-12 06:32:21 字数 641 浏览 3 评论 0原文

继之前的 R 帖子 指定 ggplot2 面板宽度之后,我已经能够生成此图:

< img src="https://i.sstatic.net/x3Cjk.png" alt="在此处输入图像描述">

使用此代码。

您可以在 http://ubuntuone.com/0Nlb97mOeDhSbFrbFKCeEG

现在我的问题是如何删除/减少图表之间的空白。我找到了 ggExtra 包、ggplot 和facet 的示例,以及带有plot.margin 或panel.margin 选项的多重图,但找不到如何应用于我的案例。

感谢您的帮助。

编辑:我刚刚注意到绘图的宽度不同。它们需要具有相同的宽度,以便它们可以共享底部图中的 x 轴标签。

Following a previous R post Specifying ggplot2 panel width, I have been able to produce this plot:

enter image description here

with this code.

You can find the output of dput(datos) at http://ubuntuone.com/0Nlb97mOeDhSbFrbFKCeEG

Now my question is how can I remove/reduce the white space between the graphs. I have found examples with ggExtra package, ggplot and facet, multiplots with options as plot.margin or panel.margin but couldn't find how to apply to my case.

Thanks for your help.

EDIT: I have just noticed that plots have not the same width. It is needed they have the same width so they can share x axis labels from bottom plot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

帅冕 2024-12-19 06:32:21

使用 xlab(NULL) 而不是 xlab(" ") 将删除每个图底部的一些空间。

使用 opts(plot.margin = unit(c(0,0,0,0), "cm")) 将从边缘移除一点空间。


我认为你创建了 5 个独立的图表并重新组合它们,让事情变得过于复杂。刻面要容易得多。

mdatos <- melt(datos[, -1], id.vars = "dia")
(p_all <- ggplot(mdatos, aes(dia, value)) +
  geom_line(colour = "blue") +
  facet_grid(variable ~ ., scale = "free_y") +
  xlab("Day") +
  ylab(NULL) 
)

绘图面板的宽度不同,因为有些 y 轴标签具有三位数,有些只有两位。更改 y 轴的格式,或使用我的分面建议。

Using xlab(NULL) instead of xlab(" ") will remove some space off the bottom of each plot.

Using opts(plot.margin = unit(c(0,0,0,0), "cm")) will remove a little space from the edges.


I think that your have overcomplicated things by creating 5 separate graphs and recombining them. Faceting is much easier.

mdatos <- melt(datos[, -1], id.vars = "dia")
(p_all <- ggplot(mdatos, aes(dia, value)) +
  geom_line(colour = "blue") +
  facet_grid(variable ~ ., scale = "free_y") +
  xlab("Day") +
  ylab(NULL) 
)

The plot panels aren't the same width because some y axis labels have three digit numbers, and some only two. Either change the formatting of the y axis, or use my facetting suggestion.

自此以后,行同陌路 2024-12-19 06:32:21

您可以使用 parlayout 布局和控制多个子图的边距。例如:

  par (fig=c(0,1,0,1), # Figure region in the device display region (x1,x2,y1,y2)
       omi=c(0,0,0.3,0), # global margins in inches (bottom, left, top, right)
       mai=c(0.1,0.1,0.3,0.1)) # subplot margins in inches (bottom, left, top, right)
  layout(matrix(1:4, 2, 2, byrow = TRUE))

You can layout and control the margins of several subplots with par and layout. For example:

  par (fig=c(0,1,0,1), # Figure region in the device display region (x1,x2,y1,y2)
       omi=c(0,0,0.3,0), # global margins in inches (bottom, left, top, right)
       mai=c(0.1,0.1,0.3,0.1)) # subplot margins in inches (bottom, left, top, right)
  layout(matrix(1:4, 2, 2, byrow = TRUE))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文