如何在ggplot2中限制结果,仅展示销量前十的汽车品牌
筛选销量前十汽车品牌并绘制ggplot2柱状图
要实现仅展示销量排名前十的汽车品牌,你可以先统计各品牌销量并筛选出前十,再基于筛选后的数据集绘图。以下是修改后的代码及说明:
步骤说明
- 统计每个品牌的销量并按降序排序,筛选出销量前十的品牌
- 从原数据中提取仅包含这些品牌的记录
- 绘制柱状图并按销量从高到低排序
修改后的完整代码
# 若未安装相关包,先执行安装命令 # install.packages("ggplot2") # install.packages("dplyr") library(ggplot2) library(dplyr) # 读入数据集 carsDataset <- read.csv("cars_train.csv", sep = "\t", na.strings = "", fileEncoding = "UTF16LE") # 统计各品牌销量,筛选前十品牌名称 top_10_marcas <- carsDataset %>% count(marca, sort = TRUE) %>% # 统计销量并按降序排列 slice(1:10) %>% # 选取销量前十的品牌 pull(marca) # 提取品牌名称向量 # 筛选原数据中仅包含前十品牌的记录 cars_top10 <- carsDataset %>% filter(marca %in% top_10_marcas) # 绘制柱状图,按销量从高到低排序 ggplot(cars_top10, aes(x = reorder(marca, marca, function(x) -length(x)))) + geom_bar(fill = 'steelblue') + ggtitle(label = "Marcas", subtitle = "As 10 marcas de carro mais vendidas") + labs(x = "Marcas", y = "Vendas") + coord_flip()
关键修改点
- 使用
dplyr包的count()快速统计各品牌销量,sort=TRUE参数自动将结果按销量降序排列 slice(1:10)直接选取销量前十的品牌数据,pull()提取品牌名称用于后续数据筛选filter(marca %in% top_10_marcas)保留原数据中仅属于前十品牌的记录- 将
reorder函数中的+length(x)改为-length(x),实现柱状图按销量从高到低排序,更贴合“最畅销”的展示逻辑
内容的提问来源于stack exchange,提问作者Edgard Bertelli
相关产品推荐
相关产品推荐

