You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将R语言barplot变量名移至顶部并调整柱状图显示样式

解决R语言barplot的两个需求:轴标签上移+分组层级展示

1. 先修正基础代码

你的代码中定义了矩阵但未赋值给matriz_plot,先补上这一步保证代码可运行:

matriz_plot <- matrix(c(1, 0, 0, 0, 
                        0.9375, 0.0625, 0, 0, 
                        1, 0, 0, 0, 
                        0.8125, 0.0625, 0.125, 0, 
                        0.75, 0.1875, 0, 0.0625, 
                        0.625, 0.125, 0.875, 0.0625, 
                        0.5, 0.125, 0.125,0.25), 
                      nrow = 4, ncol = 7)

2. 将x轴变量名移到顶部

默认barplot()的x轴标签在底部,要移到顶部需手动隐藏默认轴,再在顶部重新绘制:

# 绘制柱状图,隐藏默认x轴
bp <- barplot(matriz_plot, col=c("red","white"), col.axis="blue", 
              border="black", ylim=c(0, 4), xaxt="n")

# 在顶部添加x轴刻度和标签
axis(3, at=bp, labels=colnames(matriz_plot) %||% paste0("变量", 1:ncol(matriz_plot)), 
     col.axis="blue")
# 可选:添加x轴标题
mtext("变量名称", side=3, line=2, col="blue")

注:如果矩阵没有列名,%||%会自动生成变量1到变量7的标签,你也可以手动指定,比如labels=c("A","B","C","D","E","F","G")

3. 将堆叠改为分组层级展示

你提到的目标样式是让4个变量(矩阵行)在每个类别下并排展示,而非堆叠。只需转置矩阵并使用beside=TRUE参数:

# 转置矩阵:将原矩阵的列转为分组,行转为每组内的柱子
matriz_transposed <- t(matriz_plot)

# 绘制分组柱状图,beside=TRUE实现并排展示
bp_group <- barplot(matriz_transposed, col=c("red","white","green","yellow"), # 对应4个变量的颜色
                    col.axis="blue", border="black", ylim=c(0, 1.2), # 调整y轴适配0-1的数值范围
                    xaxt="n", beside=TRUE)

# 在顶部添加分组标签(对应原矩阵的7个列)
axis(3, at=colMeans(matrix(bp_group, ncol=4)), # 计算每组的中点位置
     labels=paste0("类别", 1:ncol(matriz_plot)), col.axis="blue")

# 添加图例区分4个变量
legend("topright", legend=paste0("变量", 1:nrow(matriz_plot)), 
       fill=c("red","white","green","yellow"), bty="n")

合并两个需求的完整代码

同时实现标签上移+分组展示的完整代码:

# 定义矩阵
matriz_plot <- matrix(c(1, 0, 0, 0, 
                        0.9375, 0.0625, 0, 0, 
                        1, 0, 0, 0, 
                        0.8125, 0.0625, 0.125, 0, 
                        0.75, 0.1875, 0, 0.0625, 
                        0.625, 0.125, 0.875, 0.0625, 
                        0.5, 0.125, 0.125,0.25), 
                      nrow = 4, ncol = 7)

# 转置矩阵
matriz_transposed <- t(matriz_plot)

# 绘制分组柱状图,隐藏默认x轴
bp_group <- barplot(matriz_transposed, col=c("red","white","green","yellow"),
                    col.axis="blue", border="black", ylim=c(0, 1.2),
                    xaxt="n", beside=TRUE)

# 添加顶部x轴标签
axis(3, at=colMeans(matrix(bp_group, ncol=4)),
     labels=paste0("类别", 1:ncol(matriz_plot)), col.axis="blue")
mtext("类别名称", side=3, line=2, col="blue")

# 添加y轴标题(可选)
mtext("数值", side=2, line=2, col="blue")

# 添加图例
legend("topright", legend=paste0("变量", 1:nrow(matriz_plot)),
       fill=c("red","white","green","yellow"), bty="n")

内容的提问来源于stack exchange,提问作者doloresafwat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:01:06