我是一个新手,尝试更改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)
显然,点图正在窃取所有图形空间,因此我的热图未显示在图形中。
TL; DR-你需要使用的rel_widths=
参数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))