在ggplot2中的分组散点图中为每个组添加任意标签

时间:2010-08-19 23:20:39

标签: r ggplot2

我有一个我希望绘制的矩阵列表。列表中的每个元素最终代表要绘制的构面。每个矩阵元素的维度为Row * Col,其中一行中的所有值都被分组并绘制为散点图(即X轴是行名称的分类,Y轴是值,每行的Col.值)。 p>

此外,我想在每个X处添加点的分布CV。

  X1       X2        value     L1
  a  subject1     8.026494 facet1
  b  subject1     7.845277 facet1
  c  subject1     8.189731 facet1

(10个分类分组 - a-j)

  a  subject2     5.148875 facet1
  b  subject2     8.023356 facet1

(针对每个分类组绘制了33个受试者)

  a  subject1     5.148875 facet2
  b  subject1     8.023356 facet2

(具有相同分类分组和主题名称的多个方面(在我的具体情况下为50)

我设法用以下方式对此表示满意:

p <- (qplot(X1, value, data=melt(df), colour=X2)
     + facet_wrap(~Probeset, ncol=10, nrow=5, scales="free_x"))

但是,我想在X轴上添加每组点的CV作为悬停在组上方的标签。我试过这个变种:

p + geom_text(aes(x=X1, y="arbitrary value at the top of the Y-axis scale", label="vector of labels")))

但他们都没有按我的意愿行事。我如何才能将每组的简历作为一个标签来获得积分?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

由于每个标签都没有X2,因此您必须将标签放入单独的数据集中,并在data geom_text参数中提供。使用可重复的示例:

library(ggplot2)

#create data with the desired structure
dd <- expand.grid(facet=LETTERS[1:4], group=letters[1:5], subject=factor(1:10))
dd$value <- exp(rnorm(nrow(dd)))

#calculate CV's
ddcv <- ddply(dd, .(facet,group), 
     function(x)c(CV=sd(x$value)/mean(x$value), maxX=max(x$value)))
ddcv$CV <- round(ddcv$CV,1)

#make plots
p <- qplot(group, value, colour=subject, data=dd) + facet_wrap(~facet)
p + geom_text(aes(x=group, y=maxX+1, label=CV), colour="black", data=ddcv)
相关问题