R语言~分页图的同一套分组变量各自排序

绘制分页图,同一套分组变量,各自排序。在网上找到了一个精致的解决方案。
原方案在此

以自己的数据为例


示例数据

resp分页,以expl为分类变量,IncMSE为数值列

这里需要用到工具包data.table

    1. 将自己的数据转换为data.tabledata.frame
df = data.table(df)
    1. 新建排序列,作为索引。这里以resp即分页列作为分组,对数值列IncMSE进行排序
df[, ord := sprintf("%03i", frank(df, resp, IncMSE, ties.method = "first"))]
    1. 作图。这里是一个高级的用法。建立了一个词典,将排序列与对应的分类变量建立对应关系,并以分类变量来定义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

成图

你可能感兴趣的:(R语言~分页图的同一套分组变量各自排序)