ggplot:水平对齐不同宽度的图,使用固定坐标

huangapple go评论71阅读模式
英文:

ggplot: Horizontally align of plots of different widths with fixed coordinates

问题

这个问题的基础上,我试图实现完全相同的效果,但是水平排列而不是垂直排列。

在问题中被接受的解决方案似乎在对齐方式为垂直时不起作用。

有人可以解释为什么吗?以及如何修复它?

这里有一个使用egg的示例,正如在原问题的答案中建议的那样。

dat1 <- data.frame(y = rep(1:10, 2), x = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()
egg::ggarrange(plot1, plot2, nrow = 1)

输出: ggplot:水平对齐不同宽度的图,使用固定坐标

请注意,左边的图在宽度上失去了它的coord_equal,以便两个图具有相同的宽度。

英文:

Building on this question, I am trying to do the exact same, but horizontally instead of vertically.

The solution accepted in the question doesn't seem to work when the alignment is vertical.

Can anyone explain why? And how to fix it?

Here's an example unsing egg, as suggested in the answer to the original question.

dat1 <- data.frame(y = rep(1:10, 2), x = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()
egg::ggarrange(plot1, plot2, nrow = 1)

Output: ggplot:水平对齐不同宽度的图,使用固定坐标

Notice that the plot on the left lost its coord_equal in favour of the two plots having the same width.

答案1

得分: 0

一种选择是使用patchwork包。

library(ggplot2)
library(patchwork)

dat1 <- data.frame(y = rep(1:10, 2), x = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()

使用+将图形并排放置。

plot1 + plot2

ggplot:水平对齐不同宽度的图,使用固定坐标

创建于2023-06-08,使用reprex v2.0.2

英文:

One option is to use the patchwork package.

library(ggplot2)
library(patchwork)

dat1 &lt;- data.frame(y = rep(1:10, 2), x = 1:20)
dat2 &lt;- data.frame(x = 1:10, y = 1:10)
plot1 &lt;- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 &lt;- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()

Use + to put plots side-by-side.

plot1 + plot2

ggplot:水平对齐不同宽度的图,使用固定坐标<!-- -->

<sup>Created on 2023-06-08 with reprex v2.0.2</sup>

huangapple
  • 本文由 发表于 2023年6月8日 09:48:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/76428097.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定