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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:22:56