更改 ggplot 中绘图的大小(宽度)

Change size (width) of plot in ggplot

我是一个新手,试图改变 ggplot 的宽度,这样我就可以在同一个图中排列不同的图(热图和点图)。然而,在尝试减小点图宽度几个小时后,我即将放弃。

热图代码(可能不相关):

heatmap_GO_NES_1<-ggplot(data=long_frame_GO_NES_1) +
  geom_tile(mapping = aes(
    x = factor(timepoint,levels = c("6h","12h","24h")),
    y =bio_process,fill = NES)) +
  ylab(label="Biological process") + 
  theme(axis.title.x=element_blank()) +
  scale_fill_gradient(low="red",high="green")+
  facet_grid( group ~. , scales="free",space="free")+
  theme(axis.text.x = element_text(angle = 90))+
  theme(strip.text.y = element_text(size = 8))

heatmap_GO_NES_1

点图代码:

dot_GO_NES_1<- ggplot(data=long_frame_GO_NES_2)+
  geom_count(mapping=aes(x=timepoint, y =bio_process, size=setsize))+
  theme(axis.title.x=element_blank(), axis.text.x=element_blank(),
    axis.ticks.x=element_blank(),axis.title.y=element_blank(),
    axis.text.y=element_blank(),axis.ticks.y=element_blank())

dot_GO_NES_1

图代码:

plot_grid(heatmap_GO_NES_1,dot_GO_NES_1)

很明显,点图偷走了所有的图space,所以我的热图没有出现在图中。

TL;DR - 您需要使用 plot_grid()rel_widths= 参数。让我用 mtcars:

的例子来说明
# Plots to display
p1 <- ggplot(mtcars, aes(mpg, disp)) + geom_point()

p2 <- ggplot(mtcars, aes(x='X', y=disp)) + geom_point(aes(size=cyl))

这是情节,你看到的地方 p2 就像你的情节......不应该太宽,否则看起来很可笑。这是 plot_grid() 的默认行为,这使得两个图具有相同的 width/relative 大小:

plot_grid(p1,p2)

使用rel_widths=调整绘图的相对宽度:

plot_grid(p1,p2, rel_widths=c(1,0.3))