ggplot没有按照它应该排序的值

时间:2017-12-12 15:35:36

标签: r sorting ggplot2

我总是喜欢在数据框中对图表进行排序,而不是在ggplot中使用reorder()函数对此策略进行排序,这种策略大部分时间都有效,但有时候,即使我没有改变任何内容,图表也会排序按字母顺序...

数据帧:

library(tidyverse)

most_used_words %>%
    arrange(desc(times_used)) %>%
    top_n(5)

 A tibble: 20 x 2
         word times_used
        <chr>      <int>
 1       news        148
 2       fake        147
 3     people        133
 4    country         95
 5        tax         92

most_used_words %>%
  arrange(desc(times_used)) %>%
  top_n(5) %>%
    ggplot(aes(x = word, y = times_used)) +
    geom_col(fill = "#03A9F4") +
    coord_flip()

以下代码在ggplot ...

中正确排序times_used变量
most_used_words_candidate %>%
      arrange(desc(times_used)) %>%
      top_n(5)

    # A tibble: 20 x 2
              word times_used
            <fctr>      <int>
 1 realdonaldtrump        965
 2           trump        762
 3          people        489
 4         hillary        435
 5         america        350

most_used_words_candidate %>%
  arrange(desc(times_used)) %>%
  top_n(5) %>%
    ggplot(aes(x = word, y = times_used)) +
    geom_col(fill = "#03A9F4") +
    coord_flip()

1 个答案:

答案 0 :(得分:2)

@aosmith是对的。 ggplot期望输入作为具有级别的因素。这就是你的第二个代码正确排序的原因。如果你试试这个

df$word  <- factor(df$word , levels=unique(df$word ))

并重新绘制第一个代码。它将按照您喜欢的字母顺序排序。

一些resource here