在使用ggplot2時,有時候需要按照值的大小給產(chǎn)生的可視化結(jié)果按順序排列,有個比較簡單的包可以幫我們完成:forcats。
假設(shè)我們有個數(shù)據(jù)集叫data,包含2列,列名分別為name和val,如下所示:
data <- data.frame(name=c("A","B","C","D","E") , value=c(3,12,5,18,45))

使用如下命令直接出圖時,
ggplot(data = data, aes(x = name, y = value, fill = name)) + geom_bar(stat = "identity")
可見:

有時我們需要按照value值排序,使x軸的分組按順序顯示,則可以使用forcats包中的fct_reorder命令來輕松完成。
這樣改造一下data,使用如下命令再次出圖時,
library(forcats)
ggplot(data = mutate(data, name=fct_reorder(name,value)), aes(x = name, y = value, fill = name)) + geom_bar(stat = "identity")
就會產(chǎn)生:

若需要倒序排列,則可使用desc()來完成:
ggplot(data = mutate(data, name=fct_reorder(name,desc(value))), aes(x = name, y = value, fill = name)) + geom_bar(stat = "identity")

怎么樣,是不是十分簡單?