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

R语言barplot:如何根据列名设置柱状图的颜色?

解决按列名设置柱状图柱子颜色的问题

你的代码问题在于col参数传入的颜色向量长度只有4,而柱子总数是20个,R会自动循环这个短向量,导致颜色按绿、红、黄、蓝交替。要让整列柱子统一颜色,需要生成和柱子数量匹配的颜色向量,每列对应的颜色重复该行数的次数。

修正后的代码:

df <- data.frame(A=c(3,2,1,4,5),B=c(1,6,3,8,4),C=c(2,1,4,8,9), D=c(4,1,2,4,6))
row.names(df)<-c("R1","R2","R3","R4","R5")
col.colors <- c(A="green", B="red", C="yellow", D="blue")
# 生成匹配每个柱子的颜色向量:每列颜色重复对应行数的次数
color_vec <- rep(col.colors[colnames(df)], each = nrow(df))
# 绘制柱状图,传入正确的颜色向量
barplot(as.vector(as.matrix(df)), names = rownames(df), col=color_vec)

关键说明:

  • rep(col.colors[colnames(df)], each = nrow(df)):将每列对应的颜色重复5次(因为数据有5行),最终生成20个颜色值,前5个为绿色(对应A列所有元素),接下来5个红色(B列),以此类推。
  • 原代码中names = as.matrix(df)会把所有数值作为柱子名称,这显然不合理,改成rownames(df)会用行名作为每组柱子的名称,更符合展示逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:53:12