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

在R中制作分组Spaghetti Plot:分类X轴、Y轴起始调整及颜色分配

解决分类X轴的Spaghetti Plot曲线从Y=0起始的问题

核心思路

要让每个物种组的曲线从Y轴0点开始,本质是给每个物种添加第一个月份+丰度0的起始数据,再结合有序分类的X轴保证绘图顺序正确。


1. 准备示例数据

先构造符合需求的测试数据(可替换为你的真实数据),重点是把月份转为有序因子,避免X轴按字母乱序排列:

library(ggplot2)
library(data.table)

# 构造示例数据:物种ID、月份(分类变量)、丰度
df <- data.table(
  species = rep(c("物种A", "物种B", "物种C"), c(4, 3, 5)),
  month = factor(c("2月", "3月", "5月", "6月", 
                   "1月", "4月", "6月", 
                   "3月", "4月", "5月", "6月", "2月")),
  abundance = c(12, 25, 30, 22, 
                18, 28, 15, 
                8, 16, 22, 20, 10)
)

# 将月份转为有序因子,确保X轴按实际月份顺序排列
df$month <- factor(df$month, levels = c("1月", "2月", "3月", "4月", "5月", "6月"), ordered = TRUE)

2. 给每个物种添加Y=0的起始点

为每个物种新增一行数据,对应X轴第一个月份、丰度0,让曲线从Y轴0点开始:

# 获取所有唯一物种
unique_species <- unique(df$species)
# 构造起始点数据集
start_points <- data.table(
  species = unique_species,
  month = factor("1月", levels = levels(df$month), ordered = TRUE),
  abundance = 0
)

# 合并原数据和起始点数据,再按物种+月份排序
df_combined <- rbind(df, start_points)
df_combined <- df_combined[order(species, month)]

3. 绘制Spaghetti Plot

用ggplot绘图,指定分组和颜色,完成曲线绘制:

ggplot(df_combined, aes(x = month, y = abundance, color = species, group = species)) +
  geom_line(linewidth = 1) +  # 调整线宽
  geom_point(size = 2) +      # 调整点大小
  scale_color_brewer(palette = "Set1") +  # 用预设配色,也可通过scale_color_manual自定义
  labs(x = "月份", y = "丰度", color = "物种") +
  theme_bw() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),  # 月份标签倾斜,避免重叠
    legend.position = "right"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:53