我有一个我希望绘制的矩阵列表。列表中的每个元素最终代表要绘制的构面。每个矩阵元素的维度为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")))
但他们都没有按我的意愿行事。我如何才能将每组的简历作为一个标签来获得积分?
提前谢谢!
答案 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)