Colorbar, display regular intervals

조회 수: 11 (최근 30일)
Francesco Marchione
Francesco Marchione 2021년 9월 24일
답변: Samay Sagar 2024년 2월 16일
I would like to have the colourbar displaying values for regular intervals: that is, I would like to have the colourbars displaying both extremes (max and min) and a fixed number of intermediate values (intervals), automatically.
I attach the xslx file
T1 = readtable('SLJ20 PEEL.xlsx', 'VariableNamingRule','preserve');
% First10Rows = T1(1:10,:)
% T1Sz = size(T1)
VarNames = T1.Properties.VariableNames;
N = 50; % Interpolation Matrix Size
xv = linspace(min(T1{:,1}), max(T1{:,1}), N); % Create Vector
yv = linspace(min(T1{:,2}), max(T1{:,2}), N); % Create Vector
[Xm,Ym] = ndgrid(xv,yv); % Create Interpolation Matrices
Zm = griddata(T1{:,1}, T1{:,2}, T1{:,3}, Xm, Ym); % Interpolate
figure
surfc(Xm, Ym, Zm)
grid on
shading interp
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
xlabel(hcb,'[{\it Pa}]');
hcb.Label.Interpreter = 'latex';
set(hcb,'TickLabelInterpreter','latex')
colormap(jet(50))
title ('EPX1','FontSize',13,'interpreter', 'latex')
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
hcb.TickLabelInterpreter='latex';
% ColorbarRulerProperties = hcb.Ruler
hcb.Ruler.TickLabelFormat = '%.2f';
set(hcb, 'Ticks', sort([hcb.Limits, hcb.Ticks]))
set(gca,'TickLabelInterpreter','latex')
% tix = hcb.Ticks;
% expstr = @(x) [x(:).*10.^ceil(-log10(abs(x(:)+(x==0)))) floor(log10(abs(x(:)+(x==0))))];
% tixexp = expstr(tix(:))
% tixexplbl = compose('%.2f \\times 10^{%2d}',[tixexp(:,1) fix(tixexp(:,2))])
% hcb.TickLabels = tixexplbl;
xlabel('{\it x} [{\it mm}]')
ylabel('{\it y} [{\it mm}]')
zlabel('{\it} Shear stress [{\it MPa}]')

채택된 답변

Samay Sagar
Samay Sagar 2024년 2월 16일
To have the colorbar display both extremes (max and min) and a fixed number of intermediate values at regular intervals automatically, you can set the “Ticks” property of the “colorbar” to a vector of values that spans from the minimum to the maximum of the data range, divided into equal intervals. You can do this using the “linspace” function.
Read more about “linspace” here:
Here's how you can modify your existing code to achieve this:
T1 = readtable('SLJ20 PEEL.xlsx', 'VariableNamingRule','preserve');
VarNames = T1.Properties.VariableNames;
N = 50;
xv = linspace(min(T1{:,1}), max(T1{:,1}), N);
yv = linspace(min(T1{:,2}), max(T1{:,2}), N);
[Xm,Ym] = ndgrid(xv,yv);
Zm = griddata(T1{:,1}, T1{:,2}, T1{:,3}, Xm, Ym);
figure
surfc(Xm, Ym, Zm)
grid on
shading interp
set(0, 'DefaultTextInterpreter', 'latex')
% Colorbar settings
hcb = colorbar;
xlabel(hcb,'[{\it Pa}]');
hcb.Label.Interpreter = 'latex';
set(hcb,'TickLabelInterpreter','latex')
colormap(jet(50))
title ('EPX1','FontSize',13,'interpreter', 'latex')
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
hcb.TickLabelInterpreter='latex';
% Define the number of intervals for the colorbar
numIntervals = 5;
cmin = min(Zm(:));
cmax = max(Zm(:));
ticks = linspace(cmin, cmax, numIntervals+1);
hcb.Ticks = ticks;
hcb.TickLabels = arrayfun(@(v) sprintf('%.2f', v), ticks, 'UniformOutput', false);
set(gca,'TickLabelInterpreter','latex')
xlabel('{\it x} [{\it mm}]')
ylabel('{\it y} [{\it mm}]')
zlabel('{\it} Shear stress [{\it MPa}]')
Read more about “Ticks” and “colobar” here:

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by