使用geom_bar fill自定义ggplot中条形图的顺序

时间:2019-11-13 12:44:43

标签: r ggplot2

我正在尝试制作一张图表,以显示不同音乐风格的乐曲中情感的比例。我已经获得了这张图表,该图表已经很令人满意了,但是如果我可以选择显示这些情感的顺序,那么我可以更容易阅读,我可以将一个颜色的正值组合在一起,而将其他颜色的负组合在一起。颜色。

Chart: Emotions proportions in songtext by music style 我试图在绘制情节之前重新排列情绪,但是ggplot似乎重新排列了它们的顺序,我不知道为什么。

    datasorted <- datasorted %>% arrange(factor(track.lyrics.predominantsentiment,
                                            levels = c("joy","trust","disgust",
                                                       "fear","anger","sadness")))


datasorted %>% filter(track.tag %in% c("Rap","R&B", "Pop", "Rock")) %>% group_by(track.tag) %>%
  ggplot(aes(x=track.tag, fill=track.lyrics.predominantsentiment,
  order=track.lyrics.predominantsentiment)) + 
  geom_bar(position = "fill")

该定单条件对图表没有影响,我尝试使用该条件也可以不使用。

有人知道如何更改订单吗?以及如何选择横条的颜色?

非常感谢

1 个答案:

答案 0 :(得分:1)

如果您提供问题的reproducible example,将可以轻松地为您提供帮助。

您不仅需要整理数据,还需要更改数据级别的顺序:

      datasorted <- datasorted %>% 
        mutate(track.lyrics.predominantsentiment = 
               fct_relevel(track.lyrics.predominantsentiment, 
                           c("joy","trust","disgust", "fear","anger","sadness")))

现在可以使用scale_fill_manual之类的比例来更改颜色。