如何使用ggplot2将聚合后的电子游戏品类欧盟销量数据绘制成柱状图
方法1:直接使用你已计算好的单个数值绘图
你只需要先把分散的销售额和对应品类整理成ggplot2可识别的数据框,再调用绘图函数即可:
# 未安装ggplot2先运行:install.packages("ggplot2") library(ggplot2) # 整理为结构化数据框 eu_sales_df <- data.frame( 品类 = c("Action", "Sports", "Shooter", "Role-Playing", "Racing"), 欧盟销售额 = c(vg_action_s, vg_sports_s, vg_shooter_s, vg_rpg_s, vg_racing_s) ) # 绘制高可读性柱状图 ggplot(eu_sales_df, aes(x = 品类, y = 欧盟销售额)) + geom_col(fill = "#2c7fb8") + # 设置柱子填充色 labs(title = "不同游戏品类的欧盟销售额对比", x = "游戏品类", y = "欧盟销售额(单位:百万)") + # 添加标题和坐标轴说明 theme_minimal() # 用简洁主题减少视觉干扰
方法2:更推荐的批量汇总方案(无需单独计算每个品类销售额)
你之前逐行filter求和的代码可以合并为更简洁的批量处理逻辑,后续新增品类也不需要重复写代码:
# 未安装dplyr先运行:install.packages("dplyr") library(dplyr) library(ggplot2) # 直接批量筛选目标品类+汇总销售额 eu_sales_df <- videogames %>% filter(Genre %in% c("Action", "Sports", "Shooter", "Role-Playing", "Racing")) %>% group_by(Genre) %>% summarise(EU_Sales = sum(EU_Sales, na.rm = TRUE)) # na.rm=TRUE避免空值导致计算结果错误 # 绘制时可按销售额排序,数据对比更直观 ggplot(eu_sales_df, aes(x = reorder(Genre, -EU_Sales), y = EU_Sales)) + geom_col(fill = "#7fbf7b") + labs(title = "不同游戏品类的欧盟销售额对比", x = "游戏品类", y = "欧盟销售额(单位:百万)") + theme_minimal()
补充说明:
geom_col()专门用于已经汇总好的数值绘图,如果你用原始未汇总的数据绘图才需要用geom_bar(stat = "identity"),当前场景用geom_col()更简洁。
内容的提问来源于stack exchange,提问作者billroggio
相关产品推荐
相关产品推荐

