Heatmap on 1d-time series data

19 visualizaciones (últimos 30 días)
Robin Schäfer
Robin Schäfer el 8 de Feb. de 2020
Comentada: Robin Schäfer el 8 de Feb. de 2020
Hello community,
i got several events on a 1-dimensional double Vector (about 60.000 x 1) (like a logical vector).
VecEvents=[0 0 0 1 0 1 0 1 1 0 1 0 0]; % 60.000x1 double
I extracted the timepoints the events occured and plotted them on a horizontal line to mark events:
Events=find(VecEvents==1);
y=ones(length(Events),1));
scatter(Events,y);
Here is an example of my real data:
Scatter.png
What I want is something like a coloured line or bar which highlights density of events.
My first approach was to smooth the vector linearly by a moving mean:
SmoothedEvents=movmean(Events,600);
So, this is not a solution, but if I plot my averaged vector against the time it will look like this:
t=1:length(SmoothedEvents); % I used a different vector for x-axis in the plot underneath
plot(t,SmoothedEvents);
movmean.png
Does anyone have a suggestion how to create a 1-dimensional heatmap (or something similar - see above) from my data? Is there even a better approach than averaging the vector?

Respuesta aceptada

KSSV
KSSV el 8 de Feb. de 2020
YOu can use somehting linke this:
x = 0:.05:2*pi;
y = sin(x);
z = zeros(size(x));
col = x; % This is the color, vary with x in this case.
surface([x;x],[y;y],[z;z],[col;col],...
'facecol','no',...
'edgecol','interp',...
'linew',5);
colorbar
  1 comentario
Robin Schäfer
Robin Schäfer el 8 de Feb. de 2020
Thank you, KSSV! Took me a while to understand 'surface' function but it works just the way i wanted (with adjusted movmean):
colorbar.png
I am not really sure if averaging is mathematically the right approach to highlight density....

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Distribution Plots en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by