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

如何在R中快速分类内置rivers数据并绘制分类频率饼图?

R语言rivers数据分类与饼图可视化快捷实现

这里有两种超快捷的实现思路,分别适配不同场景:

方案一:用tidyverse工具链(简洁易读,推荐)

如果平时常用tidyverse生态,这个方案代码逻辑连贯,一步完成数据处理+可视化:

# 先安装包(首次使用时运行)
# install.packages("tidyverse")

library(tidyverse)

# 数据处理+可视化一站式完成
tibble(river_length = rivers) %>%
  # 按规则分类
  mutate(category = case_when(
    river_length < 500 ~ "tiny",
    river_length < 1500 ~ "short",
    river_length < 3000 ~ "medium",
    TRUE ~ "long"
  )) %>%
  # 统计每个类别的数量
  count(category) %>%
  # 绘制饼图
  ggplot(aes(x = "", y = n, fill = category)) +
  geom_col(width = 1) +  # 先画柱状图
  coord_polar("y", start = 0) +  # 转成极坐标得到饼图
  labs(title = "河流长度分类频率", fill = "长度类别") +
  theme_void()  # 移除冗余的坐标轴元素,让图表更干净

关键步骤说明:

  • tibble()把内置的rivers向量转为数据框,方便后续链式操作
  • case_when()的条件是从上到下匹配的,所以无需写500 ≤ x <1500这类冗余条件,代码更简洁
  • 用ggplot2的柱状图转极坐标是绘制饼图的更灵活方式,比基础R的pie()更容易自定义样式

方案二:基础R实现(无需额外装包,轻量快速)

如果不想安装任何第三方包,用基础R的原生函数就能快速搞定:

# 1. 按规则分类
river_categories <- cut(
  rivers,
  breaks = c(0, 500, 1500, 3000, Inf),
  labels = c("tiny", "short", "medium", "long"),
  right = FALSE  # 让区间左闭右开,匹配<500这类规则
)

# 2. 统计各类别频率
category_counts <- table(river_categories)

# 3. 绘制饼图
pie(category_counts, main = "河流长度分类频率", col = rainbow(4))

关键步骤说明:

  • cut()函数专门用于数值分段,通过breaks和labels参数快速完成分类
  • right = FALSE确保区间是左闭右开,完美匹配题目中<500、<1500的规则
  • pie()原生函数直接生成饼图,col = rainbow(4)给不同类别添加区分颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:58:00