2011-04-26 60 views
3

我对R相当陌生,但我取得了很好的进步。除了一件事之外,我已经能够将ggplot2弯曲成我的意志:分类标签沿着我的boxplot中的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()并给我到底我想要什么,这是一个boxplot显示一个盒子&针对标签A,一个针对B和一个针对C.然而,轴的顺序是标签(1,2,3的盒图最接近中间10,11,12,图右侧7,8,9)。我想要的是boxplot数据从标签平均值最高的子集开始,然后按降序进行。我可以通过mean(df$Label[1:3])mean(df$Label[4:6])等在每个标签的平均值,但我不知道如何让图显示,使标签的图不会按照它们出现在factor(df$Label)(即A,B,C沿带有框的x在2,11,8),但是按照最高标签内平均值到最低值(即B,C,A沿着x和框,然后在11,8,2)。

我想我会创建一个由每个标签内平均值组成的矢量,并以某种方式将其传递给ggplot以指定轴顺序,但我无法弄清楚如何创建矢量以开始。

我需要知道的是:

什么是得到由每个标签的平均值的矢量的最佳方式,以便从最高到最低? 如何传递载体ggplot使其订单减少这些值x轴,同时还与factor(df$Label)

我接受其他方式来显示数据以及建议标签x轴,但我觉得我非常接近我想要的&平均值&给定标签内的值的传播很重要。

+0

我要澄清,在值值是不以任何方式独特 - 有很多重叠的。 – 2011-04-26 01:49:55

回答

5

这里是一个办法做到这一点

# 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') 

enter image description here

# boxplot with label sorted by median of value 
qplot(reorder(label, value, median), value, data = df, geom = 'boxplot') 

enter image description here

+0

好吧,看看那个。事实证明R有一个简单的功能来完成我在答案中描述的令人讨厌的手动过程。 – 2011-04-26 02:41:52

+0

这很好,拉姆纳特,谢谢! – 2011-04-26 03:04:39

+0

''''''''''''是另一个方便的功能在你的武器库中。 – Chase 2011-04-26 03:42:00

0

Label是一个因素。尝试as.numeric(df$Label)查看该因子的每个级别对应的数字。 ggplot2可能使用其数字级别顺序中的标签。您可以通过将levels参数传递给factor来订购系数的级别。例如,如果按照要求的顺序将矢量中的每个标签按ordered.levels=c("B","C","A",...)的顺序排列,则可以通过转换为caracter并返回,以明确的levels参数:df$Label <- factor(as.character(df$Label), levels=ordered.levels)“重新排序”标签。

所有这一切都假定ggplot2使用水平的数值来排序图。

+0

标签确实是一个因素。我会试试的,瑞恩,谢谢。 – 2011-04-26 01:49:27

+0

去使用Ramnath的答案。事实证明,有一个“重新排序”功能,可以或多或少地描述我所描述的功能。 – 2011-04-26 02:42:28