我需要使用 ggplot
的 facet_grid
绘制数据:
我的数据如下:
species <- c("spcies1","species2")
conditions <- c("cond1","cond2","cond3")
batches <- 1:6
df <- expand.grid(species=species,condition=conditions,batch=batches)
set.seed(1)
df$y <- rnorm(nrow(df))
df$replicate <- 1
df$col.fill <- paste(df$species,df$condition,df$batch,sep=".")
我的情节:
integerBreaks <- function(n = 5, ...)
{
library(scales)
breaker <- pretty_breaks(n, ...)
function(x){
breaks <- breaker(x)
breaks[breaks == floor(breaks)]
}
}
library(ggplot2)
p <- ggplot(df,aes(x=replicate,y=y,color=col.fill))+
geom_point(size=3)+facet_grid(~col.fill,scales="free_x")+
scale_x_continuous(breaks=integerBreaks())+
theme_minimal()+theme(legend.position="none",axis.title=element_text(size=8))
显然,标签太长,在图表中显得非常混乱,因此我想知道是否有一种方法可以在ggplot
对象(p
)或者gtable
/gTree
/grob
/gDesc
对象(ggplotGrob(p)
)中编辑这些标签。
我知道在创建ggplot
对象时使用labeller函数
可以获得更好的标签,但在我的情况下,我特别寻找一种在创建ggplot
对象之后编辑分面标签的方法。
ggplotGrob(p)
生成的gtable
中嵌套得相当深。 - Mike H.