2013-02-23 34 views
1

我正在尋找一種使用ggplot2創建tornado diagram的方法。爲geom_linerange的示例接近:使用ggplot2的龍捲風圖,按bin-count的降序排列

library(ggplot2) 
dmod <- lm(price ~ cut, data=diamonds) 
cuts <- data.frame(cut=unique(diamonds$cut), 
      predict(dmod, data.frame(cut = unique(diamonds$cut)), 
      se=TRUE)[c("fit","se.fit")]) 
se <- ggplot(cuts, aes(cut, fit, ymin = fit - se.fit, 
     ymax=fit + se.fit, colour = cut))+ geom_linerange(size=2) + coord_flip() 
se 

但行應被命令長度降序,即在頂部的最寬範圍。我無法弄清楚如何實現這一點。

謝謝

託尼

+0

它幫助,如果您還張貼的圖片,所以我們都可以很快地看到有什麼不妥的地方。在這種情況下,事實證明你想要「按照bin-count的降序排列」。 – smci 2015-09-16 21:59:11

回答

2

要改變的一個因素繪製順序,你需要改變的因子水平的順序。 有幾種方法可以做到這一點。我更喜歡使用factor(..., levels=new_levels)重新創建該因子。在你的情況下,你想要使用剪切$ se.fit重新排序水平。

下面的代碼是有點難看,但它能夠完成任務:

cuts$cut = factor(as.character(cuts$cut), 
        levels=levels(cuts$cut)[order(cuts$se.fit, decreasing=TRUE)]) 

enter image description here

+0

正是我在找什麼,謝謝! – Toni 2013-02-24 21:30:45