R语言 如何通过值的计数来限制x轴上的条数

nhhxz33t  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(125)

我是数据分析R编程的新手
我试图从公共数据集创建数据集名称为“all_trip_v2”的项目
Preview of my dataset
我的目标是创建一个条形图,仅显示每个“start_station_name”的Total count的前10个,并使用ggplot2 + geom_bar()显示在条形图中,并显示成员类型(member_casual)的比例
我运行这个代码

ggplot(all_trips_v2, aes(start_station_name,
                         fill = member_casual)) + 
  geom_bar()

The result from the code
正如你所看到的,结果有很多的酒吧由“开始_站_名称”分组。我只需要过滤前10计数的开始站名称。请给予我一些建议。非常感谢。
我期望能创造出这样的球棒
Expected bar chart.

tjjdgumg

tjjdgumg1#

我不知道有什么好方法可以直接在“一步”中完成,但无论如何,分两步完成应该更容易。第1步=按计数汇总数据集,第2步=过滤数据集以包括前X行。
下面是一个chickwts内置数据集的示例

library(ggplot2)
df <- chickwts
ggplot(df, aes(feed)) + geom_bar() +
    theme_classic()

要只绘制顶部的3个条形图,您可以执行以下两个步骤:

library(dplyr)
library(tidyr)
# STEP 1: summarize by feed count & arrange
df_counts <- df %>%
  count(feed) %>%  # creates column n with counts for feed
  arrange(-n)      # arrange descending by n

# STEP 2: plot with a filtered dataset
ggplot(df %>% dplyr::filter(feed %in% df_counts$feed[1:3]),
  aes(feed)) +
  geom_bar() + theme_classic()

对于OP的情况下,也许下面会工作?

# STEP 1
all_summary <- all_trips_v2 %>%
  count(start_station_name) %>% arrange(-n)

# STEP 2
ggplot(
  all_trips_v2 %>%
    dplyr::filter(start_station_name %in% all_summary$start_station_name[1:10]),
  aes(start_station_name, fill = member_casual)) + 
  geom_bar()

相关问题