Wil*_*unn 3 sorting r ggplot2 boxplot
我对R很新,但我取得了很好的进展.我已经能够将ggplot2弯曲到我的意愿,除了一件事:在我的箱线图中沿着x轴绘制分类标签的顺序.我认为这只是我对如何处理公式中数据帧范围的了解,但这里是假数据,作为一个名为df的数据帧:
Index Label Value
index1 A 1
index2 A 2
index3 A 3
index4 B 12
index5 B 11
index6 B 10
index7 C 8
index8 C 7
index9 C 9
...
index76 Z 15
index77 Z 17
index78 Z 16
Run Code Online (Sandbox Code Playgroud)
我的情节代码看起来像是qplot(df$Label, df$Value, data=df) + scale_x_discrete("Label") + opts(axis.text.x = theme_text(angle = 90, hjust = 0, size=7)) + geom_boxplot()给我我想要的东西,这是一个箱形图,显示标签A的一个盒子和胡须,一个用于B,一个用于C.但是,轴按照标签的顺序排列(盒子图1,2,3最接近原点,10,11,12位于中间,7,8,9位于图的右侧).我想要的是箱线图数据从标签平均值最高的子集开始,然后按递减顺序进行.我可以每个标签内的平均mean(df$Label[1:3])和mean(df$Label[4:6])等,但我无法弄清楚如何让图形显示如下这样的标签地块不可走,他们出现的顺序factor(df$Label)(即A,B,C沿x盒子在2,18,8),但按照标签内最高的平均值到最低值(即沿着x的B,C,An,然后是11,8,2).
我想我会创建一个由每个标签内平均值组成的向量,并以某种方式将其传递给ggplot来指定轴顺序,但我无法弄清楚如何创建矢量来开始.
我需要知道的是:
从最高到最低的顺序,获得由每个标签的平均值组成的向量的最佳方法是什么?
如何将该矢量传递给ggplot它,以便它按这些值对x轴进行排序,同时仍然使用标记x轴factor(df$Label)
我也对其他显示数据的方法持开放态度,但我认为我非常接近我想要的东西,并且给定标签内的值的均值和传播很重要.
这是一种方法
# create a dummy data frame
set.seed(1234)
df = data.frame(
label = rep(letters[1:3], each = 3),
value = sample(100, 9))
# boxplot without sorting
qplot(label, value, data = df, geom = 'boxplot')
Run Code Online (Sandbox Code Playgroud)

# boxplot with label sorted by median of value
qplot(reorder(label, value, median), value, data = df, geom = 'boxplot')
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |