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

如何使用ggplot绘制不同物种的年度数量增量折线图?

如何用ggplot绘制不同物种的年度数量增量折线图

嘿,刚上手ggplot完全不用焦虑!你的需求是把不同物种的年度数量变化做成折线图,还要区分Endangered (EN)和Vulnerable两个类别对吧?咱们一步步来,其实核心是先把数据转换成ggplot喜欢的长格式,然后就能轻松画图啦。

第一步:准备工作(加载包)

首先得加载tidyverse包,它包含了ggplot2(画图用)和tidyr(处理数据格式),不用分开装两个包:

library(tidyverse)

第二步:转换数据格式

你现在的数据是宽格式(每个物种一列),但ggplot更适合长格式(一列存物种名称,一列存对应数量)。咱们用pivot_longer()函数来转换:
假设你的数据框叫df,代码如下:

# 转换成长格式
df_long <- df %>%
  pivot_longer(
    cols = -c(Category, Year),  # 保留Category和Year列,其他列都转成物种-数量对
    names_to = "Species",       # 新列:物种名称
    values_to = "Count"         # 新列:对应数量
  )

转换后的数据大概是这样的结构(举个小例子):

CategoryYearSpeciesCount
Endangered (EN)2019Mammals505
Endangered (EN)2019Birds461
Vulnerable2019Mammals...

第三步:绘制折线图

现在数据格式对了,直接用ggplot画图就行。我们可以用分面(facet)来区分两个Category,每条折线对应一个物种:

ggplot(df_long, aes(x = Year, y = Count, color = Species)) +
  geom_line(linewidth = 1) +  # 绘制折线,调整线宽
  geom_point(size = 2) +     # 加上数据点,更清晰
  facet_wrap(~Category) +    # 按Category分两个面板
  labs(
    title = "不同物种的年度数量变化",
    x = "年份",
    y = "数量",
    color = "物种类型"
  ) +
  theme_minimal() +          # 用简洁的主题
  theme(
    plot.title = element_text(hjust = 0.5),  # 标题居中
    legend.position = "bottom"               # 图例放底部,避免遮挡
  )

一些小提示

  • 如果你的数据里Year是字符型,记得先转成数值型:df$Year <- as.numeric(df$Year),不然x轴会乱序
  • 要是想给每个Category单独设置样式,或者调整折线颜色,可以用scale_color_manual()自定义颜色
  • 如果数量差距很大(比如Plants的数量远高于其他物种),可以考虑把y轴改成对数刻度:scale_y_log10(),这样小数值的变化也能看清

这样就能得到你想要的可视化结果啦,试试吧!如果遇到问题随时提~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:42:34