我正在尝试创建一个多面条形图,其中条形根据频率排序(使用 fct_reorder)。这是我的代码:
\n\nword_count_label <- twitter_sm %>%\n group_by(complaint) %>%\n summarize_if(is.numeric, sum) %>%\n ungroup() %>%\n gather(word, n, -complaint) %>%\n mutate(word = as.factor(word)) %>%\n filter(n > 0) %>%\n group_by(complaint) %>%\n mutate(word = fct_reorder(word, n)) %>%\n top_n(20, n) %>%\n arrange(complaint, desc(n)) %>%\n ungroup()\nRun Code Online (Sandbox Code Playgroud)\n\n生成的数据框如下所示:
\n\n complaint word n\n <fct> <fct> <dbl>\n 1 non_complaint klm 820\n 2 non_complaint flight 653\n 3 non_complaint unit 537\n 4 non_complaint americanair 532\n 5 non_complaint delta 441\n 6 non_complaint thank 420\n 7 non_complaint southwestair 363\n 8 non_complaint britishairway 326\n 9 non_complaint just 294\n10 non_complaint usairway 261\n# \xe2\x80\xa6 with 30 more rows\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当我创建一个分面条形图来绘制每个方面的字数时(代码如下所示),
\n\n ggplot(word_count_label, aes(x = word, y = n, fill = complaint)) +\n geom_col() + coord_flip() + \n facet_wrap(~complaint, scales = \'free_y\')\nRun Code Online (Sandbox Code Playgroud)\n\n该图仅为一个方面订购条形:
\n\n\n\n有谁对为什么会发生这种情况有任何见解?谢谢!
\n您可以使用tidytextreorder_within()包中的而不是. 朱莉娅·西尔格(Julia Silge)在这里有一个很好的例子。fct_reorder()
word_count_label <- twitter_sm %>%
group_by(complaint) %>%
summarize_if(is.numeric, sum) %>%
ungroup() %>%
gather(word, n, -complaint) %>%
mutate(word = as.factor(word)) %>%
filter(n > 0) %>%
mutate(word = reorder_within(word, n, complaint)) %>%
group_by(complaint) %>%
top_n(20, n) %>%
arrange(complaint, desc(n)) %>%
ungroup()
Run Code Online (Sandbox Code Playgroud)
此外,Julia 还用作scale_x_reordered()ggplot 中的图层。下面是一个示例:
ggplot(word_count_label, aes(x = word, y = n, fill = complaint)) +
geom_col() +
coord_flip() +
scale_x_reordered() +
facet_wrap(~complaint, scales = 'free_y')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |