绘制分页图,同一套分组变量,各自排序。在网上找到了一个精致的解决方案。
原方案在此
以自己的数据为例
以resp分页,以expl为分类变量,IncMSE为数值列
这里需要用到工具包data.table
- 将自己的数据转换为data.table的data.frame
df = data.table(df)
- 新建排序列,作为索引。这里以resp即分页列作为分组,对数值列IncMSE进行排序
df[, ord := sprintf("%03i", frank(df, resp, IncMSE, ties.method = "first"))]
- 作图。这里是一个高级的用法。建立了一个词典,将排序列与对应的分类变量建立对应关系,并以分类变量来定义axis.label。
ggplot(rf1, aes(IncMSE, ord, fill = IncMSE.pval <= 0.05))+
geom_bar(stat = 'identity', color = 'black')+
facet_wrap(.~resp, scales = 'free') +
scale_y_discrete(labels = rf1[, setNames(as.character(expl), ord)]) +
scale_fill_manual(values = c('white','steelblue'),labels = c('',expression(italic("P")~"< 0.05")))
这里还有一个巧妙的用法,如果填充色是二元结构的,可以建立一个判断语句来定义参数fill。如上所示,以pval是否显著为依据来定义填充色:fill = IncMSE.pval <= 0.05。