Поскольку вы используете функцию barplot2()
из библиотеки gplots
, приведем пример использования этого подхода.
Во-первых, сделал гистограмму, как указано в файле справки функции barplot2()
. ci.l
и ci.u
являются поддельными значениями доверительного интервала. Barplot должен быть сохранен как объект.
hh <- t(VADeaths)[1:2, 5:1]
mybarcol <- "gray20"
ci.l <- hh * 0.85
ci.u <- hh * 1.15
mp <- barplot2(hh, beside = TRUE,
col = c("grey12", "grey82"),
legend = colnames(VADeaths)[1:2], ylim = c(0, 100),
cex.names = 1.5, plot.ci = TRUE, ci.l = ci.l, ci.u = ci.u)
Если вы посмотрите на объект mp
, он содержит координаты x для всех баров.
mp
[,1] [,2] [,3] [,4] [,5]
[1,] 1.5 4.5 7.5 10.5 13.5
[2,] 2.5 5.5 8.5 11.5 14.5
Теперь я использую верхние значения доверительного интервала для вычисления координат для значений y сегментов. Сегменты будут начинаться с позиции, которая на 1 выше конца доверительных интервалов. y.cord
содержит четыре строки - первая и вторая строки соответствуют первому такту, а две другие строки - второму такту. Наибольшее значение y вычисляется из максимальных значений доверительных интервалов для каждой пары баров. x.cord
значения просто повторяют те же значения, что и в mp
объекте, каждые 2 раза.
y.cord<-rbind(c(ci.u[1,]+1),c(apply(ci.u,2,max)+5),
c(apply(ci.u,2,max)+5),c(ci.u[2,]+1))
x.cord<-apply(mp,2,function(x) rep(x,each=2))
После того, как построена гистограмма, используйте sapply()
, чтобы сделать пять сегментов линии (потому что на этот раз есть 5 групп), используя вычисленные координаты.
sapply(1:5,function(x) lines(x.cord[,x],y.cord[,x]))
Чтобы нанести текст над сегментами, вычислите координаты x и y, где x — средняя точка двух значений x бара, а значение y вычисляется из максимальных значений доверительных интервалов для каждой пары баров плюс некоторая константа. Затем используйте функцию text()
для добавления информации.
x.text<-colMeans(mp)
y.text<-apply(ci.u,2,max)+7
text(c("*","**","***","NS","***"),x=x.text,y=y.text)
person
Didzis Elferts
schedule
21.03.2013
bar.group
из пакетаagricolae
, который надевает буквы за вас. - person mnel   schedule 21.03.2013barplot
, вы можете хранить центральные точки стержней, напримерbarstore <- barplot(1:3)
. Чтобы убедиться, что это работает, попробуйтеabline(v=barstore)
и обратите внимание, что все вертикальные линии пересекают центр столбцов. Используяsegments
, вы можете использовать эти сохраненные точки для построения линий сравнения/взаимодействия. - person thelatemail   schedule 21.03.2013