Что я должен сделать, чтобы добавить текст в нужное место на гистограмме?

#r #bar-chart

#r #гистограмма

Вопрос:

введите описание изображения здесьНа базовом столбчатом графике я хочу добавить текст в нужном месте, но мой текст перекрывается со стандартной полосой ошибок. Вот мой код и выходные данные. Спасибо.

 d<-data.frame(Proband=c(1400,1500), 
          Sibling=c( 1700,1800), 
          Proband2=c( 1200, 1250), 
          Sibling2=c(  1300,  1500))

d <- do.call(rbind, d)
colnames(d) <- c("A","B")


Se<-data.frame(Proband=c(   100,450    ), 
               Sibling=c(    170, 180 ), 
               Proband2=c(120,125 ),
               Sibling2=c(130,150 ))

Se <- do.call(rbind, Se)

colnames(Se) <- c("A","B"))


freq<- c(21,26,32,56,45,66,78,88)

mycolors2<-c(paste0("royalblue", c(4:3)), c("steelblue4", "steelblue3"))

barCenters<-barplot(d, beside = TRUE, ylim=c(0,5000), legend.text = rownames(d), 
                    args.legend = list(x = "topleft", bty="n"), 
                    col=mycolors2, xlab="[![enter image description here][1]][1]Size (kb)",
                    ylab="Average ")


arrows(barCenters, d - Se * 2, barCenters,
       d   Se * 2, lwd = 1.5, angle = 90,
       code = 3, length = 0.05)


text(barCenters, d    Se * 2 , freq ,cex=1,srt = 90)
  

Комментарии:

1. используйте text(..., adj = -0.5)

Ответ №1:

y Значение, которое вы устанавливаете, text() очень мало по сравнению с диапазоном, отображаемым на оси. Просто увеличьте множитель на Se , и надписи появятся над полосами ошибок.

 text(barCenters, d    Se * 5 , freq ,cex=1,srt = 90)
  

введите описание изображения здесь

Примечание: Вы можете настроить формулу интервала для ваших меток, поскольку в настоящее время она зависит от величины ваших стандартных ошибок. Это означает, что столбцы с большими ошибками будут размещать метки выше на графике.

Комментарии:

1. было бы лучше добавить вместо умножения diff(par('usr')[3:4]) / 20

Ответ №2:

Поскольку y=d Se*2 это высота ваших верхних столбцов ошибок, вы можете добавить к нему небольшое расширение. Например. добавление 300 к x выглядит красиво. Вы также можете добавить аргумент adj=-.5 к этому.

 text(barCenters, d   Se*2   300, freq, cex=1, srt=90)
  

введите описание изображения здесь

Однако, вероятно, цифры несколько вводят в заблуждение в этой позиции и могут быть перепутаны только с этими ошибками. Я предлагаю разместить количество обращений (?) Непосредственно в столбцах.

 text(barCenters, 350, freq, cex=.9, col="white")
  

введите описание изображения здесь

Вы также можете рассмотреть возможность объяснения чисел в описании или ?legend .