使用ggplot2的龙卷风图,按bin-count的降序排序

时间:2013-02-23 16:39:50

标签: r ggplot2 histogram

我正在寻找一种使用ggplot2创建tornado diagram的方法。 geom_linerange的示例非常接近:

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

但是这些线应按长度降序排列,即顶部最宽的范围。我无法弄清楚如何实现这一目标。

谢谢,

托尼

1 个答案:

答案 0 :(得分:2)

要更改因子的绘图顺序,您需要更改因子级别的顺序。 有几种方法可以做到这一点。我更喜欢使用factor(..., levels=new_levels)重新创建因子。在您的情况下,您希望使用cut $ se.fit重新排序级别。

以下代码有点难看,但它完成了工作:

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

enter image description here