R语言barplot绘图:如何实现总对局条形内的成功对局量填充
基础R barplot实现条形内分层填充的实现方法
核心实现逻辑
之前绘制失败的核心原因是,R基础包的barplot只有在height参数接收矩阵格式数据时,才会按列实现堆叠分层效果;传入单个数值向量时只能绘制无分层的纯色条形。
你需要的效果可以拆解为标准堆叠结构:每个条形的总高度和原本完全一致(等于总对局数number),拆分两个分层段:
- 底层填充:成功完成的对局数
sum - 剩余上层段:未完成的对局数(即
number - sum)
两段数值相加刚好等于number,完全匹配你要的“总对局数条形内部嵌入成功对局规模分层”的视觉效果。
可直接运行的代码
# 1. 计算分层所需的未完成对局数值 game_count$incomplete <- game_count$number - game_count$sum # 2. 构造堆叠用的矩阵:每一列对应一个配对的两个分层段数值 plot_height_matrix <- rbind( completed = game_count$sum, incomplete = game_count$incomplete ) # 3. 绘制分层条形图 barplot( height = plot_height_matrix, xlab = 'Pairs', ylim = c(0, 35), ylab = 'Games played', # 为两层设置区分度颜色 col = c("#3a7afe", "#d9d9d9"), # 自动生成图例标注分层含义 legend.text = rownames(plot_height_matrix), args.legend = list(x = "topright", bty = "n") )
效果说明
- 生成的每个条形总高度和你原有代码直接绘制
game_count$number的结果完全一致,不会出现纵轴刻度、总高度的偏移 - 可通过调整
col参数中的两个色值,自定义分层的视觉样式,比如将未完成段设置为斜线纹理填充 - 如果不需要图例,直接删除
legend.text和args.legend两个参数即可
内容的提问来源于stack exchange,提问作者Lookszz
相关产品推荐
相关产品推荐

