我对 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
我的绘图代码看起来像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)
(即沿 x 的 A、B、C框位于 2、11、8 处),但按标签内平均值从高到低的顺序排列(即沿 x 的 B、C、An 和框,然后是 11、8、2 的框)。
我想我会创建一个由每个标签内平均值组成的向量,并以某种方式将其传递给 ggplot 以指定轴顺序,但我不知道如何创建向量开始。
我需要知道的是:
获得由每个标签的平均值组成的向量的最佳方法是从最高到最低的顺序是什么?
如何将该向量传递给它,ggplot
以便它按这些值对 x 轴进行排序,同时仍x
用factor(df$Label)
我也愿意接受有关显示数据的其他方式的建议,但我认为我非常接近我想要的,并且给定标签内值的平均值和分布很重要。