首页 > 解决方案 > 更改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)

在此处输入图像描述

显然,点图正在窃取所有图形空间,因此我的热图没有出现在图中。

标签: rggplot2plotheatmap

解决方案


rel_widths=TL; DR - 你需要使用plot_grid(). 让我用一个例子来说明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(),这使得两个图的宽度/相对大小相同:

plot_grid(p1,p2)

在此处输入图像描述

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

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

在此处输入图像描述


推荐阅读