2016-01-29 99 views
1

我在使用ggplot2分面图时过宽的面板标签时遇到问题。用ggplot调整面板标签宽度

这里是我用来生成剧情代码:

png(paste("/directory/", hgnc_symbol, "_", curr_gene, ".png", sep=""), 
    width=4, height=3, units="in", pointsize=1, res=300) 
    print({barplot <- 
    ggplot(curr_data, aes(x = condition, y = tpm, fill=condition)) + 
    geom_boxplot(outlier.colour=NA, lwd=0.2, color="grey18") + 
    stat_boxplot(geom ='errorbar', color="grey18") + 
    geom_jitter(size=0.8) + 
    facet_wrap(~target_id) + 
    guides(fill=FALSE) + 
    theme_bw() + 
    labs(title=paste(hgnc_symbol, "_", curr_gene, sep="")) + 
    labs(x="condition") + labs(y="TPM") + 
    theme(text = element_text(size=5), strip.background=element_rect(size = 1), 
     axis.text.x = element_text(angle = 90, hjust = 1, size=4.5))}) 
    dev.off() 

情节找出来是这样的:

enter image description here

正如你所看到的,面板的背景标签如此之广,以至于这些情节本身几乎不可见。图上绘制的点也比我预期的要大得多。

奇怪的是,我用这个完全相同的代码生成此下面的图形(看起来好)短短数天前:

enter image description here

是什么导致了这种差异,我怎么能解决问题?

+0

当您提供一些示例数据时,您可以获得更好的结果。但是,我认为问题是ggplot用于绘图和标签的不同尺度。你说你使用完全相同的代码得到了不同的结果。我敢打赌,你将图表保存在不同的维度下。试着增加你的宽度和高度,看看你的结果是否接近你的第二个更理想的图。 – oshun

回答

0

在ggplot中,text is defined in pts,它们是绝对测量单位。绘图面板的大小是相对的,并根据您在保存绘图时指定的尺寸进行缩放。如果尺寸很小,那么文本将相对于面板区域较大。如果尺寸很大,那么相对于面板区域,文字会很小。参看下面的例子:

ggplot(diamonds, aes(x = x, y =y)) + geom_point() + facet_wrap(~ clarity) 
ggsave("filepath//4x3.png", width=4, height = 3) 
ggsave("filepath//8x6.png", width=8, height = 6) 

在图中的4×3: 4x3.png

在图中的8×6: enter image description here

可以编辑grobs对情节尺寸施加更精细的控制(example)。

+0

谢谢@oshun;我很欣赏这个解释。如您在原始评论中所建议的那样调整尺寸,解决了问题。 – mshum