如何在R语言中生成指定样式的3D柱状图?
在R中生成指定样式的3D柱状图
是的,R完全可以生成3D柱状图。针对你提供的数据集和参考样式(每个受试者对应两个不同颜色的3D柱子,分别展示response和duration数值),我们可以用plot3D包快速实现,以下是完整方案:
1. 安装并加载依赖包
# 首次使用时安装包 install.packages(c("plot3D", "tidyverse")) # 加载包 library(plot3D) library(tidyverse)
2. 准备数据集
先把宽格式数据转换为长格式,方便分组绘图:
# 你的原始数据集 dat <- tibble::tribble( ~subject, ~response, ~duration, '1', 10, 20, '2', -7, 30, '3', 5, 20, '4', 7, 50, '5', -5, 40 ) # 转换为长格式 dat_long <- dat %>% pivot_longer(cols = c(response, duration), names_to = "metric", values_to = "value")
3. 绘制3D柱状图
# 定义绘图坐标 x <- as.integer(dat_long$subject) y <- as.integer(factor(dat_long$metric, levels = c("response", "duration"))) z <- dat_long$value # 生成3D柱状图 bar3D(x = x, y = y, z = z, zlim = c(min(z) - 3, max(z) + 3), # 调整z轴范围,避免柱子贴边 xlab = "受试者", ylab = "指标", zlab = "数值", col = c("#4285F4", "#EA4335")[y], # 给两个指标设置不同颜色 border = "white", # 柱子边框设为白色,提升可读性 space = 0.2, # 控制柱子间的间距 ticktype = "detailed") # 显示详细刻度标签 # 添加图例 legend("topright", legend = c("response", "duration"), fill = c("#4285F4", "#EA4335"), bty = "n") # 去掉图例边框
这段代码生成的图表会和你需要的样式匹配:每个受试者对应两个3D柱子,不同指标用不同颜色区分,坐标轴标签清晰,还添加了图例方便识别。
内容的提问来源于stack exchange,提问作者jkatam
相关产品推荐
相关产品推荐

