2016-05-28 3 views
1

Ich versuche, ein Ethogramm oder eine Aktogramm-Figur in R aufzubauen. Ich habe bereits ein einzelnes Verhalten über 150 Sekunden (mit einer 1-sekündigen Auflösung) gemessen, in dem ich das Folgende in Excel aufschrieb: ein leeres Zelle repräsentiert "kein Verhalten" und Zelle, die eine 1 enthält, repräsentiert "Verhalten". Jedes Tier repräsentiert eine Reihe (150 Zellen lang), und die Anzahl der gewerteten Tiere ist in jedem Experiment unterschiedlich (n zwischen 11 und 20). Bisher habe ich alle Rohdaten exportiert als * .csvR-Ethogramm oder -Actogramm-Skript

Hier ist ein Beispiel für die ersten vier Zeilen mit je ~ 40 Datenpunkte aus einer * .csv-Datei (jede Zeile ist 1 Tier, jeder Datenpunkt ist Komma getrennt):

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,1,1 

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,1, 

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,1,,,, 

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,1,1,1,1,1,,,, 

ich zu dem in 7C dargestellten ähnlich zu schaffen sucht einen Graphen in R möchte: https://elife-publishing-cdn.s3.amazonaws.com/08758/elife-08758-fig7-v2.jpg (das ganze kostenlos Artikel sind hier: https://elifesciences.org/content/4/e08758). Das Verhalten würde im Zeitverlauf als "winzige Kästchen" dargestellt werden (die Färbung könnte später im Illustrator geändert werden). Und es wäre nett, jedes einzelne Diagramm aus einer * csv-Datei (Experiment) zu erstellen.

Wer kann mir helfen?

+0

Können Sie ein Beispiel Eingangsdaten liefern die Grafik zu erzeugen zu benutzen? (eine kleine Teilmenge des Originals ist in Ordnung) – digEmAll

+0

Danke für die Frage, ich habe den obigen Abschnitt aktualisiert! –

+0

Möchten Sie ein Diagramm für jedes CSV oder ein einzelnes Diagramm erstellen, das die Daten aller CSV-Dateien enthält, die durch Linien getrennt sind (wie im Beispielbild 7c, das Sie angegeben haben)? – digEmAll

Antwort

2

Hier ist eine mögliche Lösung mit image() Funktion:

# custom function using image to emulate an ethograph 
ethograph <- function(zeroOneMatrix, color='blue',xlab='behaviour',ylab='animals'){ 
    m <- as.matrix(zeroOneMatrix) 
    m[m == 0] <- NA 
    nAnimals <- nrow(m) 
    nTimeSlots <- ncol(m) 

    image(x=1:nTimeSlots, 
     y=1:nAnimals, 
     z=t(m[nAnimals:1,]), 
     col=c(color), 
     xlab=xlab, 
     ylab=ylab, 
     yaxt = 'n') 
} 

# here we create a random matrix of 0 and 1 (animals on the rows and time slots on columns) 
# of course you will get your data reading the csv 
set.seed(123) 
nTimeSlots <- 150 
nAnimals <- 50 
csv1 <- matrix(sample(0:1,nTimeSlots*nAnimals,replace=TRUE),nrow=nAnimals) 

# let's plot 
ethograph(csv1, color='blue') 

Ergebnis:

enter image description here

Verwandte Themen