繁体   English   中英

使用 ggplot2 按 r 中的列表进行分面条形图

[英]Facet barplot by list in r using ggplot2

抱歉我的知识有限,我有点初学者。

我正在尝试为一个班级做一个项目,我们必须在其中创建数据可视化,并且我找到了一个我想要使用的数据框( dplyr包中的starwars ),但是我遇到了一些问题。 我想根据列表中的项目对数据进行分面。 基本上我想看看电影中角色最常见的家乡是什么。 这是我试图运行的命令。

library('dplyr')
library('ggplot2')
ggplot(starwars,aes(x=homeworld)) + geom_bar() + facet_wrap(~films)

也许这就是你正在寻找的东西。

  1. 由于每个角色出现的电影都存储在列表列中,因此您首先必须tidyr::unnest该列。
  2. 为了最终得到一个漂亮的图,最好手动计算计数
  3. 通过这种方式,我们可以使用reorder_withinscale_xxx_reordered ,这为我们提供了每个方面的有序图。
  4. 此外,最好将 homeworld 放在 y 轴上。 此外,我删除了所有丢失 homeworlds 的 obs。
library(ggplot2)
library(dplyr)
library(tidyr)

starwars %>% 
  unnest(films) %>% 
  filter(!is.na(homeworld)) %>%
  count(homeworld, films) %>% 
  mutate(homeworld = tidytext::reorder_within(homeworld, n, films)) %>% 
  ggplot(aes(x = n, y = homeworld)) + 
  geom_col() +
  facet_wrap(~films, scales = "free_y") +
  tidytext::scale_y_reordered()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM