Добавить планки погрешностей отдельно в линейный график решетки?

У меня есть линейный график, созданный с помощью xyplot решетки. Он содержит два типа измеренных температур, один из которых является средним значением. Поэтому я бы хотел добавить к этим пунктам (t.tort) стандартные ошибки. К сожалению, сделать это отдельно с помощью (Hmisc)errbar не получится... вот что я пока придумал:

График температуры

xyplot(mean.tort+t.ws~DateTime, pre, type=c("a", "p"), col=c("red", "blue"),
   main="Pre-Translocation",
   xlab=list(label="Date and Time", cex=1), 
   ylab=list(label="Temperature (°C)", cex=1),
   scales = list(tck = c(1, 0),
                 x=list(cex=0.8, rot=45, tick.number=40),
                 y=list(cex=0.8, tick.number=8, limits=c(29,43))),
   key=list(text=list(c("Tortoise","Ambient")), lines=list(col=c("red", "blue"),type="l"), corner=c(0.5,0.92)))
errbar(x=pre$DateTime, y=pre$mean.tort, yplus=pre$mean.tort+pre$se.tort,yminus=pre$mean.tort-pre$se.tort,
   add=T, col="red")

И важные биты моего фрейма данных следующие:

pre$DateTime<-c(as.POSIXct("2013-01-27 09:00:00" "2013-01-27 10:00:00" "2013-01-27 11:00:00" "2013-01-27 12:00:00" "2013-01-27 13:00:00")
pre$t.ws<-c(32.7, 35.5, 37.1, 37.6, 38.7)
pre$mean.tort<-c(32.4, 34.9, 35.1, 36.8, 37.7)
pre$se.tort<-c(0.825, 0.84, 0.21, 0.228, 0.28)

Я немного расстроился из-за этого, поэтому любые предложения будут очень благодарны. Большое спасибо за ваши усилия заранее!


person Community    schedule 14.11.2013    source источник
comment
Вы не можете смешивать базовую и сеточную графику. Вы осмотрелись? stackoverflow.com/questions/2381618/   -  person Roman Luštrik    schedule 14.11.2013


Ответы (1)


Попробуй это

Ваши данные:

pre = data.frame(DateTime = as.POSIXct(c("2013-01-27 09:00:00", "2013-01-27 10:00:00", 
                                     "2013-01-27 11:00:00", "2013-01-27 12:00:00", 
                                     "2013-01-27 13:00:00")),
            t.ws = c(32.7, 35.5, 37.1, 37.6, 38.7),
            mean.tort = c(32.4, 34.9, 35.1, 36.8, 37.7),
            se.tort = c(0.825, 0.84, 0.21, 0.228, 0.28))

Сценарий:

require(lattice)

xyplot(mean.tort+t.ws~DateTime, pre,
   main="Pre-Translocation",
   xlab=list(label="Date and Time"), 
   ylab=list(label="Temperature (°C)"),
   scales = list(tck = c(1, 0),
                 x=list(cex=0.8, rot=45, tick.number=40),
                 y=list(cex=0.8, tick.number=8, limits=c(29,43))),
   key=list(text=list(c("Tortoise","Ambient")), 
            lines=list(col=c("red", "blue"), 
                       type="l"), corner=c(0.5,0.92)),
   lx = pre$mean.tort - pre$se.tort, ux = pre$mean.tort + pre$se.tort,
   panel = function (x,y, lx, ux,  ...){
     panel.xyplot(x,y, type = "b", col=c("red", "blue"), ...)
     panel.segments(x0 = x, x1 = x, y0 = lx, y1 = ux, col = "red", ...)
   }
)

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

Вы можете использовать panel.arrows() вместо сегментов, если вы действительно хотите поместить эти маленькие «шапки» на планки погрешностей.

person sparrow    schedule 14.11.2013
comment
Дорогой воробей, спасибо тебе огромное за это - ты мой герой! =) Раньше я играл с панелью, но не мог заставить ее работать... - person ; 15.11.2013