grid.arrange显示空图

2ic8powd  于 2023-04-09  发布在  其他
关注(0)|答案(2)|浏览(152)

我已经在R中使用ggplot2创建了一些图。现在,我想使用grid.arrange合并两个图,但是在使用此函数后,我只得到空图。
我也试过cowplot库,但我得到了同样的问题。

## Pipe age distribution in the initial pipe network conditions
pipe_age_0 = 2019 + net.ini$time.construction
pipe_age = 2019 - pipe_age_0

p6 <- ggplot(net.ini, aes(x = pipe_age))
p6 + geom_histogram(binwidth = 1,
                    col="black",
                    size=0.1,
                    fill = "lightgrey") +
     scale_x_continuous(breaks = seq(from = 0, to = 140, by = 10)) +
     labs(y="Count", x="Age [Years]") +
     theme_bw(base_size = 12, base_family = "")

## Density stacked with histogram count
p7 <- ggplot(net.ini, aes(x = pipe_age))
p7 + geom_histogram(aes(y = ..density..),
                    binwidth = 1,
                    col="black",
                    size=0.1,
                    fill = "lightgrey") +
  geom_density(alpha = 0.1, fill="#FF6666") +
  scale_x_continuous(breaks = seq(from = 0, to = 140, by = 10)) +
  labs(y="Density", x="Age [Years]") +
  theme_bw(base_size = 12, base_family = "")

grid.arrange(p6, p7)

我希望有两个图形,一个在另一个上面,或者一个在另一个旁边,使用grid.arrange。但是由于某种原因,我一直得到空图。这是图p6和p7的样子,第三个是grid.arrange,空图:

lo8azlld

lo8azlld1#

不知道为什么,但是只有在我们把它赋值给变量之后,它才能工作。

p <- ggplot(df)
p + geom_col(aes(x,y))

所以试试这样的方法:

p7 <- ggplot(net.ini, aes(x = pipe_age))
p7 <- p7 + geom_histogram(aes(y = ..density..),
                    binwidth = 1,
                    col="black",
                    size=0.1,
                    fill = "lightgrey") +
  geom_density(alpha = 0.1, fill="#FF6666") +
  scale_x_continuous(breaks = seq(from = 0, to = 140, by = 10)) +
  labs(y="Density", x="Age [Years]") +
  theme_bw(base_size = 12, base_family = "")

适用于cowplotgrid.arrange

n8ghc7c1

n8ghc7c12#

我也有同样的问题。我知道你4年前问过这个问题,但我会分享什么帮助了我,以防其他人仍然经历类似的事情。
唯一帮助我解决空图问题的是调整我编写的创建图的代码。不要将ggplot行作为自己的行,而是与下面包含图规格的行合并起来。例如,您的p6图应该看起来像这样:

p6 <- ggplot(net.ini, aes(x = pipe_age)) + 
geom_histogram(binwidth = 1,
                    col="black",
                    size=0.1,
                    fill = "lightgrey") +
     scale_x_continuous(breaks = seq(from = 0, to = 140, by = 10)) +
     labs(y="Count", x="Age [Years]") +
     theme_bw(base_size = 12, base_family = "")

正如你所看到的,唯一的区别是我删除了第二个“p6”,并添加了一个加号来连接这些线。在我用自己的作业这样做之后,它起作用了。

相关问题