我想創建一個使用ggplot的熱圖,但我想通過觀察數量來排序y軸。我在列N中排列數據框,並將觀察數添加到組名,以便它出現在軸標籤中。當我繪製數據時,它會根據組名重新排序。有沒有辦法根據它們在數據框中出現的順序來設置因子水平?如何將因子水平設置爲它們在數據框中出現的順序?
一些數據:
library(dplyr)
library(tidyr)
library(ggplot2)
school <- c("School A", "SChool B", "School C", "School D", "School E", "School F")
N <- c(25,28,12,22,30,25)
var1 <- c(1,0,1,1,0,1)
var2 <- c(0,0,0,1,0,1)
var3 <- c(0,1,0,1,1,1)
df <- tbl_df (data.frame (school, N, var1, var2, var3))
df <- arrange (df, N) %>%
gather (variable, value, var1:var3)
df$school <- paste0 (df$school, " (", df$N, ")")
df <- select (df, school, variable, value)
ggplot(df, aes(variable, school)) + geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient(low = "white",high = "steelblue")
最終欲學校的順序爲:
學校C(12)
學校d(22)
學校A(25 )
School F(25)
學校B(28)
學校E(30)
正如我想的多條曲線我想找到一種方法來自動執行此操作,而不必重新設置因子水平在每次這樣做。解決此
謝謝@konvas - 完美工作。 – Greg 2014-10-20 16:42:13