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

如何在R或ggplot2中绘制类矩阵小型数据集的可视化图表

展示多挑战响应计数:Base R & ggplot2 实现方案

你的数据集是宽格式(每行对应一个挑战,列记录不同响应的计数),绘图前需先处理数据格式,再选择并列/堆叠条形图展示所有挑战的计数分布。以下是两种工具的具体实现:

第一步:预处理数据

原数据中计数列是table类,需先转为普通数值,同时处理缺失值:

# 转换table类列为数值型
DATA[] <- lapply(DATA, function(x) if(inherits(x, "table")) as.numeric(x) else x)
# 替换NA为0(避免绘图报错)
DATA[is.na(DATA)] <- 0

ggplot2 实现(推荐,灵活美观)

ggplot2更适配tidy格式数据,先转成长格式再绘图:

library(tidyr)
library(ggplot2)

# 转成长格式(tidy data)
tidy_data <- pivot_longer(DATA, cols = -Challenge, names_to = "响应选项", values_to = "计数")

# 绘制并列条形图(便于对比同一挑战的不同响应)
ggplot(tidy_data, aes(x = reorder(Challenge, -计数), y = 计数, fill = 响应选项)) +
  geom_bar(stat = "identity", position = position_dodge2(preserve = "single")) +
  labs(title = "各挑战的受访者响应计数", x = "挑战类型", y = "响应人数", fill = "响应选项") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) + # 旋转x轴标签避免重叠
  scale_fill_brewer(palette = "Set2") # 选用清晰的配色方案

# 若要堆叠条形图,只需修改position参数:
# geom_bar(stat = "identity", position = "stack")

Base R 实现(原生无需额外包)

Base R用barplot函数,直接基于宽格式矩阵绘图:

# 提取数值矩阵,设置行名为挑战名称
plot_matrix <- as.matrix(DATA[, -1])
rownames(plot_matrix) <- DATA$Challenge

# 绘制并列条形图
barplot(t(plot_matrix), beside = TRUE, col = hcl.colors(ncol(plot_matrix), "Viridis"),
        main = "各挑战的受访者响应计数", xlab = "挑战类型", ylab = "响应人数",
        las = 2) # 旋转x轴标签至垂直

# 添加图例
legend("topright", legend = colnames(plot_matrix), fill = hcl.colors(ncol(plot_matrix), "Viridis"),
       cex = 0.8) # 缩小图例适配画面

# 若要堆叠条形图,去掉beside=TRUE即可

关键说明

  • 转长格式:ggplot2依赖tidy数据结构(每一行对应一个观测),便于映射颜色、x/y轴等美学属性
  • 旋转x轴标签:因挑战名称较长,旋转后避免标签重叠,提升可读性
  • 处理NA:原数据中存在缺失值,替换为0后保证绘图完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:16:18