生成眼动追踪数据的热图

时间:2014-09-08 13:16:56

标签: python r matlab heatmap

我有Tobii Eyetracker的数据集。 在cetain操作之后,数据集看起来像这样

timestamp      xposition      yposition

我使用python来收集数据。当参与者看着监视器时,数据被重新记录。我想为显示器的大小生成热图。

  

稍后我还想制作一张图片并叠加这张热图。

我想用R来生成热图。 执行此操作的算法是什么,或者是否有插件直接将我的数据集作为输入提供?

实验设置:

  1. 时间是相对时间:100,100.02,100.04,100.06 ......依此类推 以.02秒的顺序递增
  2. xPosition和yPosition以厘米为单位。从显示器的中心。
  3. 背景图片将分为10行6列方形框,每个尺寸为3.4厘米
  4. 使用的显示器分辨率大小为1920x1080精确MonitorUsed
  5. 我运行的代码有错误: 在matlab中使用dlmwrite导出后,我使用R Studio中的GUI加载变量并执行以下操作:

    > xPos = myfile[1:278,1]
    > yPos = myfile[1:278,2]
    > breaks.x <- seq(-23.5, 23.5, length.out = 3.4)
    > breaks.y <- seq(-14.1, 14.1, length.out = 3.4)
    > int.x <- findInterval(xPos, breaks.x)
    > int.y <- findInterval(yPos, breaks.y)
    > tb <- table(int.x, int.y)
    > image(breaks.x, breaks.y, tb, las=1)
    Error in image.default(breaks.x, breaks.y, tb, las = 1) : 
      dimensions of z are not length(x)(-1) times length(y)(-1)
    

    我之间做了 - 在x中为+ 23.5,在y中为+ 14.1,因此我在进行实验时与生成的点相匹配。仅在此区域绘制的图像。

    Dataset

1 个答案:

答案 0 :(得分:2)

首先让我们生成一些数据

# Set RNG seed for reproducibility 
set.seed(12345) 

times <- seq(as.POSIXct("2014-09-08 14:00:00"), 
             as.POSIXct("2014-09-08 16:00:00"), 5)
pos.x <- runif(length(times), 0, 1024)
pos.y <- runif(length(times), 0, 768)

现在,我们可以使用findInterval将每个x,y对映射到我们在breaks.xbreaks.y中定义的特定时间间隔。在这种情况下,我使用了20x20网格,但显然你可以随意改变它 然后我们使用table生成一个列联表,它将是我们的位置矩阵&#34;。

breaks.x <- seq(0, 1024, length.out = 20)
breaks.y <- seq(0, 768, length.out = 20)
int.x <- findInterval(pos.x, breaks.x)
int.y <- findInterval(pos.y, breaks.y)

# See below for explanation
int.x <- factor(int.x, levels=1:20)
int.y <- factor(int.y, levels=1:20)

tb <- table(int.x, int.y)

最后,绘制热图

image(breaks.x, breaks.y, tb, las=1)

注意:两个factor调用是必需的,因为table将忽略没有数据点的间隔。转换为因子有效地迫使表输出值,即使在那些没有值的插槽中也是如此。