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

如何转换R语言flexclust包milk数据集以适配ggplot堆叠百分比柱状图?

解决milk数据集格式转换与堆叠百分比柱状图绘制问题

步骤1:加载依赖包与预处理数据集

首先加载flexclust获取目标数据集,tidyverse用于数据转换和绘图。原milk是矩阵格式,需转为数据框并提取行名作为Animal列:

library(flexclust)
library(tidyverse)

# 将milk矩阵转为带Animal列的数据框
milk_df <- as.data.frame(milk) %>%
  rownames_to_column(var = "Animal")

步骤2:转换为三列长格式

使用pivot_longer将宽格式的营养成分列拆分为Nutrient(营养成分名称)和Value(对应数值)两列,得到你需要的三列结构:

# 宽转长,生成Animal、Nutrient、Value三列数据
milk_long <- milk_df %>%
  pivot_longer(cols = -Animal, 
               names_to = "Nutrient", 
               values_to = "Value")

步骤3:绘制堆叠百分比柱状图

借助ggplot2直接绘制百分比堆叠图,position = "fill"会自动将各营养成分的数值转换为占比:

# 绘制堆叠百分比柱状图
ggplot(milk_long, aes(x = Animal, y = Value, fill = Nutrient)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = scales::percent) +  # 将y轴刻度转为百分比格式
  labs(title = "动物奶营养成分占比",
       x = "动物",
       y = "百分比",
       fill = "营养成分") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转x轴标签避免重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:42:43