How to plot heat map on the trajectory?

12 views (last 30 days)
ryunosuke tazawa
ryunosuke tazawa on 14 Nov 2023
Commented: Mathieu NOE on 17 Nov 2023
I want to create a heat map from trajectory data. In the code below, xLo and yLo are trajectory data. (Strictly speaking, it is xy coordinate data.) Also, FLo is the value that represents the scale of the heat map. Here, the trajectory data contains multiple trajectories. In other words, there are multiple trajectories from a starting point to a particular ending point. This time I want to draw a heat map of the trajectory using this data, but since the end point of one trajectory 1 is connected to the start point of the next trajectory 2, it should be drawn as a curve, but unnecessary space is created. I would like to remove this space before drawing the heatmap. Can someone please help me? This is done by writing each heat-mapped trajectory from the top using a for loop, but as the figure shows, a space is created between the start and end points.
clear all;
close all;
%% load date
load("FractalDimension_UpperD5_parabola.mat")
fLo = fd;
load("Reconstraction_UpperD5_parabola.mat")
AngleLo = ReconTra(:,1);
%% calucurate xy coodination
xLo = sin(AngleLo);
yLo = -cos(AngleLo);
XLo = zeros(N,1);
YLo = zeros(N,1);
FLo = zeros(N,1);
% getting Index of start point at each trajecory
startIndices = find(XLo == -1);
% dividing all trajectory date into each trajectory date
numTrajectories = numel(startIndices);
trajectoriesX = cell(1, numTrajectories);
trajectoriesY = cell(1, numTrajectories);
trajectoriesF = cell(1, numTrajectories);
for i = 1:numTrajectories
if i < numTrajectories
trajectoriesX{i} = XLo(startIndices(i):startIndices(i+1)-1);
trajectoriesY{i} = YLo(startIndices(i):startIndices(i+1)-1);
trajectoriesF{i} = FLo(startIndices(i):startIndices(i+1)-1);
else
trajectoriesX{i} = XLo(startIndices(i):end);
trajectoriesY{i} = YLo(startIndices(i):end);
trajectoriesF{i} = FLo(startIndices(i):end);
end
end
%%
figure;
% drawing heatmap on each trajectory
hold on;
for i = 1:numTrajectories
% gerating grid
xi = linspace(min(trajectoriesX{i}), max(trajectoriesX{i}), 100);
yi = linspace(min(trajectoriesY{i}), max(trajectoriesY{i}), 100);
[xi, yi] = meshgrid(xi, yi);
% liner spline
interpF = scatteredInterpolant(trajectoriesX{i}, trajectoriesY{i}, trajectoriesF{i}, 'linear', 'none');
% calucurate value of spline
zi = interpF(xi, yi);
% draw heatmap
surf(xi, yi, zi, 'EdgeColor', 'none', 'FaceColor', 'interp');
colormap(jet(256));
% setting behavior of heatmap
caxis([0 8]);
ylim([0 1]);
xlim([-1 1]);
colorbar;
h = gca;
h.FontSize = 15;
h.FontName = 'Times New Roman';
ylabel('Y coordination', 'fontSize', 18);
xlabel('X coordination', 'fontSize', 18);
zlabel('Fractal Dimension', 'fontSize', 18);
grid on;
view(2);
end
  1 Comment
Mathieu NOE
Mathieu NOE on 17 Nov 2023
hello
you need to provide the mat files as well if you want someone to help you

Sign in to comment.

Answers (0)

Categories

Find more on Colormaps in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!