R语言如何重排矩阵/数据框行 调整条形图分组显示顺序
调整条形图柱组顺序的实现方法
R的barplot函数绘制并列条形图时,会严格按照传入数据的行顺序从左到右排列柱组,你只需要提前把数据框的行按照目标顺序重排,再同步调整x轴标签顺序即可,注意不要只改标签顺序,否则会出现数据和标签错配的问题。
操作步骤
- 定义目标显示顺序对应的
bcs列取值 - 匹配取值重排数据框行,生成排序后的数据集
- 绘图时传入排序后的数据,同步修改
names.arg的标签顺序和数据顺序对应
可直接运行的代码
# 按 Low Score -> Mid Score -> High Score 的顺序重排数据 target_levels <- c("low-score", "mid-score", "high-score") agg_2_sorted <- agg_2[match(target_levels, agg_2$bcs), ] # 绘制排序后的条形图 barplot(t(as.matrix(agg_2_sorted[,-1])), main = "Actual Default vs Predicted Default", xlab = "Score Category", ylab = "Default Rate", names.arg = c("Low Score", "Mid Score", "High Score"), col = gray.colors(2), beside = TRUE) legend("topleft", c("Default", "Pred. Default"), fill = gray.colors(2))
说明:用
match()做行匹配比手动写行索引agg_2[c(2,3,1), ]更稳定,后续如果bcs的取值有增减,代码也不会因为行号变化出错。
内容的提问来源于stack exchange,提问作者Saïd Maanan
相关产品推荐
相关产品推荐

