Добавление панелей ошибок в горизонтальную полосу в R - PullRequest
0 голосов
/ 01 июня 2018

Я был бы очень признателен за помощь в решении моей маленькой проблемы с сообществом здесь.Я искал везде, но пока не нашел решения.

Мои данные выглядят так:

trait2 <- c('A','B','C','D')
rg <- c (0.5480, 0.4801, 0.2805, -0.2480)
se <- c(0.0495, 0.0908, 0.0548, 0.0957)

trait2   rg      se
A       0.5480  0.0495
B       0.4801  0.0908
C       0.2805  0.0548
D       -0.2480  0.0957

И я построил базовую диаграмму с использованием этого кода:

barplot1 <- barplot(data$rg,
main="correlation between traits",
xlab="rG",  
border="blue", 
las=1, 
horiz=TRUE, 
names.arg=data$trait2, 
cex.names=0.5,
xlim=range(-0.4,0.6,0.1) )

, который работает нормально: barplot

Но у меня проблемы с панелями ошибок, использующими этот код:

arrows(barplot1, 
   data$rg- data$se,
   data$rg+ data$se,
   lwd= 1.5,angle=90,code=3,length=0.05)

Появляются панели ошибок, но не там, где они должны появляться: errobars

Это, наверное, очень просто, но я был бы очень признателен, если бы кто-нибудь мог мне помочь.Бест, Арон

1 Ответ

0 голосов
/ 01 июня 2018

Если horiz = FALSE, тогда ваш кодовый фрагмент arrows должен быть

arrows(x0 = barplot1, 
       y0 = data$rg - data$se,
       x1 = barplot1,
       y1 = data$rg + data$se,
       lwd= 1.5,angle=90,code=3,length=0.05)

Однако, поскольку horiz = TRUE, вам необходимо переключить позиции x0, y0, x1, y1.Полный код для этого в базе R:

barplot1 <- barplot(data$rg,
                    main="correlation between traits",
                    xlab="rG",  
                    border="blue", 
                    las=1, 
                    horiz = TRUE,
                    names.arg=data$trait2, 
                    cex.names=0.5,
                    xlim=range(-0.4,0.6,0.1))


segments(data$rg - data$se, barplot1, data$rg + data$se , barplot1,
         lwd = 1.5)

arrows(data$rg - data$se, barplot1, data$rg + data$se, barplot1, 
       lwd = 1.5, angle = 90,
       code = 3, length = 0.05)

enter image description here


Это проще сделать в ggplot2.

ggplot(data, aes(trait2, rg)) + geom_col(color = "blue") + 
  geom_errorbar(aes(ymin = rg - se, ymax = rg + se), width = 0.3) + 
  coord_flip() + 
  theme_bw()

enter image description here

...