如何从ggplot中修剪额外的空间

时间:2017-12-06 16:29:14

标签: r ggplot2

我正在尝试使用ggplot2制作一个非常单一的百分比热图,理想情况下,它只是两个单个精简列。我尝试了以下代码,认为aes中的width选项可以解决问题。

p_prev_tg <- ggplot(tg_melt, aes(x = variable , y = OTU, fill = value, 
                    width=.3)) + geom_tile() + 
                    scale_fill_gradientn(colours = hm.palette2(10)) + 
                    xlab(NULL) + ylab(NULL) + 
                    theme(axis.text=element_text(size=7)) 
p_prev_tg

不幸的是,这会返回一个包含大量空白区域的图表,如图所示。我想要的情节是那两个并排的酒吧,我怎么能在ggplot中做到这一点?

heatmap

谢谢

1 个答案:

答案 0 :(得分:1)

这个解决方案怎么样?

set.seed(1234)
tg_melt <- data.frame(variable=rep(c("Prevalence_T","Prevalence_NT"), each=10),
                      OTU=rep(paste0("OTU_",1:10),2),
                      value=rnorm(20))

library(RColorBrewer)
library(ggplot2)
hm.palette2 <- colorRampPalette(rev(brewer.pal(11, 'Spectral')))

p_prev_tg <- ggplot(tg_melt, aes(x = as.numeric(variable), y = OTU, fill = value)) + 
                    geom_tile() + 
                    scale_fill_gradientn(colours = hm.palette2(10)) + 
                    xlab(NULL) + ylab(NULL) + 
                    theme(axis.text=element_text(size=7)) + 
                    scale_x_continuous(breaks=c(1,2),
                      limits=c(0,3), 
                      labels=levels(tg_melt$variable))+
                    theme_bw()

p_prev_tg

enter image description here