Tim Richter-Heitmann
2014-Jun-30 08:42 UTC
[R] x,y scatterplots, with averaging by a column
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! -- Tim Richter-Heitmann (M.Sc.) PhD Candidate International Max-Planck Research School for Marine Microbiology University of Bremen Microbial Ecophysiology Group (AG Friedrich) FB02 - Biologie/Chemie Leobener Stra?e (NW2 A2130) D-28359 Bremen Tel.: 0049(0)421 218-63062 Fax: 0049(0)421 218-63069
On Mon, 30 Jun 2014 10:42:28 AM Tim Richter-Heitmann wrote:> 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 speciesabundance> data on the y-axis. Each pair of values (i just have twomeasurements> for each day) should be represented by their mean with absoluteerror> 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 sampleID> (because the whiskers basically represent the values for y1,2(11,12;> 21,22)).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