如何调整tibble数据以在ggplot2中绘制分组柱状图?
解决方法
你遇到的问题核心是当前数据为宽格式,三个指标(浏览量/互动量/评论量)分别占用独立列,缺少你绘图代码中需要的category分类字段和value数值字段,只要先将数据转换为长格式即可。
1. 转换数据格式
使用tidyr包的pivot_longer函数完成宽表转长表:
# 加载依赖包,已安装可直接运行 library(tidyverse) # 转换为长格式 data_long <- data %>% pivot_longer( cols = c(Views, Interactions, Comments), names_to = "category", values_to = "value" )
2. 绘制分组柱状图
转换后的数据可以直接适配你原来的绘图逻辑,这里做了少量优化:将Day转为因子避免X轴出现无效刻度,调整柱子间距避免拥挤:
bp_vic <- ggplot(data_long, aes(x = as.factor(Day), y = value, fill = category)) + geom_col(position = position_dodge(0.8), width = 0.7) + labs(x = "发布天数", y = "数值", fill = "指标类型") + theme_minimal() bp_vic
可选优化
由于Views数值远高于另外两个指标,会导致互动量、评论量的柱子高度几乎不可见,可添加对数Y轴调整显示效果:
bp_vic + scale_y_log10(labels = scales::comma)
内容的提问来源于stack exchange,提问作者David M Vermillion
相关产品推荐
相关产品推荐

