如何在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
相关产品推荐
相关产品推荐

