2016-11-09 68 views
2

我正在嘗試更改堆積條形圖中的組的繪圖順序。其他人也問過類似的問題, herehere但我似乎無法得到任何類似的工作。更改堆積條形圖的繪圖順序

這是一個玩具的例子。我有一個數據框,其中包含許多網站,緯度以及每個網站上的老鼠,兔子和狗的數量。我想製作一個堆積的條形圖,其中y軸上的緯度排序爲網站,x軸上的動物數量也是如此。我想要按特定順序(例如按大小,從小到大)繪製動物條。

我已經編寫了我認爲應該可以工作的代碼,但是我規定動物繪圖順序的努力只重新安排了傳說,而不是情節本身。

library(ggplot2) 
df <- read.table(header=TRUE, text="site group taxa latitude 
A mouse 2 -20 
           B rat 3 -17 
           C dog 6 -18 
           D rabbit 7 -24 
           A rabbit 2 -20 
           B mouse 5 -17 
           C rabbit 3 -18 
           D dog 2 -24 
           A dog 3 -20 
           B rabbit 4 -17 
           C mouse 3 -18 
           D mouse 2 -24") 

plotOrder <- c("mouse","rat","rabbit","dog") #set the order in which I want to plot the groups 
df$group <- factor(as.character(df$group), levels = plotOrder) #reorders the legend & colour, not plotting order 

plot1 <- 
    ggplot(data = df, 
     aes(x=reorder(site, latitude), y=taxa, fill=group))+ 
    geom_bar(aes(order = group), stat="identity") + 
    coord_flip() 
plot1 

在此先感謝。

回答

1

您可以通過訂購整個data.frame實現這一點:

plot1 <- 
    ggplot(data = df[order(df$site, df$group),], 
     aes(x=reorder(site, latitude), y=taxa, fill=group))+ 
    geom_bar(stat="identity") + 
    coord_flip() 
plot1 

enter image description here