1

我正在寻找一种使用 ggplot2创建龙卷风图的方法。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

但是线条应该按长度降序排列,即顶部最宽的范围。我不知道如何实现这一目标。

谢谢,

托尼

4

1 回答 1

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)])

在此处输入图像描述

于 2013-02-24T18:34:23.050 回答