Skip to content

x,y scatterplots, with averaging by a column

2 messages · Tim Richter-Heitmann, Jim Lemon

#
Hallo!

I have this matrix:

SampleID, Day, Species1, Species2,Species3,...,Speciesn
1,Monday,abundance values
2,Monday,abundance values
11,Tuesday,abundance values
12,Tuesday,abundance values
21,Wednesday,abundance values
22,Wednesday,abundance values

I would like to plot the Days on the x-axis, and the species abundance 
data on the y-axis. Each pair of values (i just have two measurements 
for each day) should be represented by their mean with absolute error 
bars (so we have basically a vertical min,max-range) and whiskers. The 
means for each Species observation should be connected with lines.
Also of interest would be annotating the whispers with their sample ID 
(because the whiskers basically represent the values for y1,2 (11,12; 
21,22)).
Any help is welcome! I am new to R, so please bear with me. Thank you!
#
On Mon, 30 Jun 2014 10:42:28 AM Tim Richter-Heitmann wrote:
abundance
measurements
error
The
ID
(11,12;
Hi Tim,
I think this might get you started:

trhdf<-data.frame(SampleID=seq(0,50,by=10)+(1:2),
 Day=factor(rep( c("Monday","Tuesday","Wednesday",
  "Thursday","Friday","Saturday"),
 each=2),levels=c("Monday","Tuesday","Wednesday",
  "Thursday","Friday","Saturday")),
 Species1=sample(0:20,12),Species2=sample(0:20,12),
 Species3=sample(0:20,12),Species4=sample(0:20,12),
 Species5=sample(0:20,12))

rollfunc<-function(x,FUN="mean",roll=2) {
 lenx<-length(x)
 xmeans<-rep(NA,lenx/2)
 start<-1
 for(xm in 1:(lenx/2)) {
  xmeans[xm]<-do.call(FUN,list(x[start:(start+roll-1)]))
  start<-start+roll
 }
 return(xmeans)
}

xpos<-rep(1:6,5)+seq(-0.4,0.4,by=0.2)
ypos<-as.vector(sapply(trhdf[,3:7],rollfunc))
ymin<-as.vector(sapply(trhdf[,3:7],rollfunc,"min"))
ymax<-as.vector(sapply(trhdf[,3:7],rollfunc,"max"))

library(plotrix)

plot(xpos,ypos,pch=c("1","2","3","4","5"),ylim=c(0,20),
 xaxt="n",xlab="Day",ylab="Abundance")
dispersion(xpos,ypos,ymax,ymin,interval=FALSE)
staxlab(1,at=1:6,
 labels=c("Monday","Tuesday","Wednesday",
  "Thursday","Friday","Saturday"))

Jim