2014-03-05 32 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