我有一个实验设计数据我ggplot
与facet_grid
:
factors
实验设计是:
factors <- c("mmm.control.30.2","mmm.control.60.2","mmm.control.150.2","mmm.control.300.2","mmm.control.1440.2",
"mmm.cxx.30.2","mmm.cxx.60.2","mmm.cxx.150.2","mmm.cxx.300.2","mmm.cxx.1440.2")
每个factor
有3个重复
samples <- unlist(lapply(factors,function(f) paste(f,1:3,sep="_")))
因此data.frame
是:
df <- data.frame(sample=samples,val=rnorm(30),stringsAsFactors = F)
df$replicate <- rep(1:3,10)
df$factor <- factor(gsub("_\\d$","",df$sample,perl=T),levels=factors)
这是情节
的助手function
integerBreaks <- function(n = 5, ...)
{
suppressPackageStartupMessages(library(scales))
breaker <- pretty_breaks(n, ...)
function(x){
breaks <- breaker(x)
breaks[breaks == floor(breaks)]
}
}
我试图通过使用此代码的因素facet
绘图:
library(ggplot2)
ggplot(df,aes(x=replicate,y=val,color=factor))+
geom_point(size=3)+facet_grid(~factor,scales="free_x")+
scale_x_continuous(breaks = integerBreaks())+
theme_minimal()+theme(legend.position="none",axis.title=element_text(size=8))
正如您所看到的那样,facet
标签和每个facet
中的左右点都会被切断,因为小平面标签的宽度与小平面的数量之间的比率很大。
我知道我可以使用strip.text.x
theme
参数来玩,但我想知道是否有自动方法让标签适合方面(或者将刻面进一步分开),并且这些点不会被切断。
我问,因为这是一个通用代码,其中facet及其标签的数量会发生变化。可能有可能根据刻面的数量和标签的宽度来提出一个近似strip.text.x
值的函数,但这听起来有点棘手,因此我的好奇心如果已经解决了