2014-03-05 35 views
1

我有重複測量眼球追蹤實驗的時間序列數據。隨時間繪製離散變量(圍巾圖)

該數據集由若干受訪者組成,每個受訪者有48個試驗。 數據集有一個變量('掃視'),這是一個變量('時間')之間的過渡,每次試驗的範圍爲0-1。過渡分爲三個不同的類別('ver','hor'和'diag')。

下面是一個腳本,將在Python中創建一個小example data set(一個參與者和兩個試驗):

import numpy as np 
import pandas as pd 

saccade1 = np.array(['diag','hor','ver','hor','diag','ver','hor','diag','diag', 
'diag','hor','ver','ver','ver','ver','diag','ver','ver','hor','hor','hor','diag', 
'diag','ver','ver','ver','ver']) 

time1 = np.array(range(len(saccade1)))/float(len(saccade1)-1) 

trial1 = [1]*len(time1) 

saccade2 = np.array(['diag','ver','hor','diag','diag','diag','hor','ver','hor', 
'diag','hor','ver','ver','ver','ver','diag','ver','ver','hor','diag', 
'diag','hor','hor','diag','diag','ver','ver','ver','ver','hor','diag','diag']) 
time2 = np.array(range(len(saccade2)))/float(len(saccade2)-1) 

trial2 = [2]*len(time2) 

saccade = np.append(saccade1,saccade2) 
time = np.append(time1,time2) 
trial = np.append(trial1,trial2) 
subject = [1]*len(time) 

df = pd.DataFrame(index=range(len(subject))) 
df['subject'] = subject 
df['saccade'] = saccade 
df['trial'] = trial 
df['time'] = time 

另外我還做了一個CSV文件與可下載相同的數據here

我希望能夠製作一個所謂的圍巾情節,以便可視化隨着時間的推移順序,但我不知道如何製作這些情節。

我想繪製(每個參與者分開),其中時間在x軸上,試驗在y軸上。對於每個試驗,我希望將過渡表示爲彩色「堆疊」條。

我有這類地塊的唯一的例子,在這本書「眼動追蹤 - 全面指導方法和措施」(圖6.8b)link

誰能告訴/幫我做這?

(I可以處理其中蟒或R編程 - 優選蟒)

+4

你可以添加一些示例數據和類似情節的形象? – Thierry

+1

@Thierry我已經添加了一些示例數據和鏈接,指向使用這些圖的源代碼。 –

回答

1

下面是使用GGPLOT2 R中的溶液中。您需要重新編碼time2,以便它表示經過的時間,而不是總時間。

library(ggplot2) 
dataset <- read.csv("~/Downloads/example_data_for_scarf.csv") 
dataset$trial <- factor(dataset$trial) 
dataset$saccade <- factor(dataset$saccade) 
dataset$time2 <- c(0, diff(dataset$time)) 
dataset$time2[dataset$time == 0] <- 0 
ggplot(dataset, aes(x = trial, y = time2, fill = saccade)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

scarf plot