Skip to content
Menu
Dr Jian Chen
  • Home
  • CV
  • Research
    • Publications
    • Subitizing Project
    • Schizophrenia Project
  • 写作
  • About Me
Dr Jian Chen

Plot Heatmap from Eye Tracking Data

Posted on September 7, 2017

There are many ways/toolbox to plot a heat map from eye tracking data. but I prefer DIY


Here is the source code:

%% Data Structure Explanation
% Explanation from Eyelink Programers Guide 3.0

%--------------------------------------------------------
% dataEyelink =
%
%       samples: [401341x4 double]()
%     fixations: [3965x6 double]()
%      saccades: [3964x9 double]()
%        blinks: [1720x3 double]()
%      triggers: [1080x3 double]()

%--------------------------------------------------------
% dataEyelink.samples
%       column1         column2         column3     column4
%       timepoint       x               y           pupil size
%--------------------------------------------------------
% dataEyelink.fixations
%       column1         column2         column3     column4 column5 column6
%       tmepoint_start  timepoint_end   duration    x       y       avg pupil size
%--------------------------------------------------------
% dataEyelink.saccades
%       column1         column2         column3     column4 column5 column6
%       tmepoint_start  timepoint_end   duration    x_from  y_from  x_to
%       column7         column8         column9
%       y_to            amplitude       peak velocity
%                       in degrees      degr/sec
%--------------------------------------------------------
% dataEyelink.blinks
%       column1         column2         column3
%       tmepoint_start  timepoint_end   duration
%--------------------------------------------------------
% dataEyelink.triggers
%       column1         column2         column3
%       tmepoint        1=SYNCON        Trial(I also wrote trial number)
%                       0=SYNCOFF
%--------------------------------------------------------



clear;
load xxxxEyelink.mat

%% variables
gaussSigma = 0.05;
posX = round(dataEyelink.fixations(:,4));
posY = round(dataEyelink.fixations(:,5));
gazeDuration = dataEyelink.fixations(:,3) / max(dataEyelink.fixations(:,3)); % rescale to 0-1

%% generating data for heatmap
gazedata = [posX/1024, posY/768](); % rescale to 0-1
gazedata = gazedata((gazedata(:, 1))\>0, :); % remove possible negative value...

%% make gaussians
figure;
[X,Y]() = meshgrid(0:0.001:1, 0:0.001:1);
z = zeros(size(X,1),size(X,2));

for i = 1:length(gazedata)
z = z + gazeDuration(i) * exp(-( ((X - gazedata(i,1)).^2 ./ (2*gaussSigma^2)) + ((Y - gazedata(i,2)).^2 ./ (2*gaussSigma^2)) ) );
end

mesh(X,Y,z); % plot the heatmap
colorbar;
caxis([0,300]());
view(0,90);


print('heatmap', '-dtiff','-r300');
  • Eyelink
  • Eyetracking

Tags

64-bit ActiView asc Biosemi BP Calibration Chrome Extension CRT database dynamic edf EEG EEG.event EEGKiller eeglab ERP ERP.EVENTLIST.eventinfo ERPLAB Error bar Event EVENTLIST Eyelink Eyetracking face research Index Javascript KbCheck KbQueueCheck Keyboard Laser library Linux Mac MATLAB Neuroscan Notes Parallel Port Psychtoolbox toolbox Tricks Trigger Tsinghua Ubuntu UniMelb Windows

Categories

©2021 Dr Jian Chen