【问题标题】:Is there a way to order factors with facet wrap?有没有办法用 facet wrap 订购因子?
【发布时间】:2021-09-20 12:20:09
【问题描述】:

我正在尝试绘制图表,但想根据给定值对因子变量进行排序。似乎情节并没有反映我想要的。我会根据meancore对语言进行排序。有什么想法吗?

library(tidyverse)

set.seed(200) # reproducibility

df <- tibble(

  language = gl(4, 10, labels = c("Python", "R", "Javascipt", "Excel")),
  gender = factor(ifelse(sign(rnorm(40))==-1, 0, 1), labels = c("Male", "Female")),
  score = floor(runif(40, 25, 80))
)

df <- df %>% group_by(gender, language) %>%
  summarise(meanscore = mean(score))

df %>%
  mutate(language = fct_reorder(language, meanscore)) %>%
  ggplot(aes(language, meanscore, fill = gender)) +
  geom_col() +
  facet_wrap(~gender) +
  coord_flip()


【问题讨论】:

标签: r ggplot2


【解决方案1】:

我相信这就是你想要的?利用 tidytext 包中的 reorder_within

library(tidytext)

set.seed(200)

df <- tibble(
  
  language = gl(4, 10, labels = c("Python", "R", "Javascipt", "Excel")),
  gender = factor(ifelse(sign(rnorm(40))==-1, 0, 1), labels = c("Male", "Female")),
  score = floor(runif(40, 25, 80))
)

df <- df %>% group_by(gender, language) %>%
  summarise(meanscore = mean(score))

ggplot(df, aes(reorder_within(language, meanscore, gender), meanscore, fill = gender)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  scale_x_reordered() +
  facet_wrap(gender ~., scales = "free")

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多