首页 > 解决方案 > 如何使用 r 中的 facet wrap 过滤数据并绘制柱形图?

问题描述

https://www.kaggle.com/shivamb/netflix-shows-and-movies-exploratory-analysis/notebook包含数据集。(文件大小为 2.1 MB)

我正在寻找实现以下数据集的目标 - 确定来自美国、英国和印度国家的前 25 位主要参与者。

我制定的代码如下,

library(tidyverse)
net_flix <- read.csv("netflix_titles_nov_2019.csv")

net_flix %>% 
    separate_rows(country, sep = ",")%>% 
    filter(country == "India"| country == "United States"| country == "United Kingdom")%>%
    separate_rows(cast, sep = ",")%>%
    count(cast)%>%
    slice_max(n, n = 25)%>%
    ggplot(aes(y = fct_reorder(cast, n), x = n))+
    geom_col()

结果输出如下,

在此处输入图像描述

预期输出如下,(仅图表顶部)

在此处输入图像描述

在查看建议的问题后进行尝试https://stackoverflow.com/questions/55864054/filtering-the-data-using-pickerinput-and-plotting-based-on-the-filtered-data-i

标签: rggplot2facet-wrapcolumn-chart

解决方案


尝试这个。问题facet_wrap在于,为了按国家/地区分面,您必须同时按演员和国家/地区计数。还。为了在每个方面排序条形,我使用了 tidytext::reorder_within 和 tidytext::scale_x_reordered:

library(tidyverse)
net_flix <- read.csv("netflix_titles_nov_2019.csv")

net_flix %>% 
  separate_rows(country, sep = ",")%>% 
  filter(country == "India"| country == "United States"| country == "United Kingdom")%>%
  separate_rows(cast, sep = ",")%>%
  # Count by country and cast
  count(country, cast)%>%
  slice_max(n, n = 25)%>%
  ggplot(aes(y = tidytext::reorder_within(cast, n, country), x = n))+
  geom_col() +
  tidytext::scale_y_reordered() +
  facet_wrap(~country, scales = "free")

这给了我这个情节:

在此处输入图像描述


推荐阅读