How to change the marking in colorbar?
15 views (last 30 days)
Show older comments
Athira T Das
on 20 Apr 2023
Answered: Walter Roberson
on 20 Apr 2023
How to change the colorbar marking uniformly?
clc;close all;clear all;
lambda=532
w0 = 1; % beam waist
z = 0; % propagation distance
k = 2*pi/lambda; % wave number
l = 1; % topological charge
x = linspace(-5*w0,5*w0,256); % x-axis grid
y = linspace(-5*w0,5*w0,256); % y-axis grid
[X,Y] = meshgrid(x,y); % create meshgrid
R = sqrt(X.^2 + Y.^2);
phi = atan2(Y,X) + l*atan2(R,z);
u = exp(-(X.^2 + Y.^2)/w0^2) .* exp(1i*phi);
figure;
imagesc(x,y,angle(u));
colormap('hsv');
axis equal tight;
xlabel('x');
ylabel('y');
cb = colorbar;
cb.Ticks = [0 0.5 1];
cb.TickLabels = {'0', 'pi/2', '2pi'};
0 Comments
Accepted Answer
Walter Roberson
on 20 Apr 2023
lambda=532
w0 = 1; % beam waist
z = 0; % propagation distance
k = 2*pi/lambda; % wave number
l = 1; % topological charge
x = linspace(-5*w0,5*w0,256); % x-axis grid
y = linspace(-5*w0,5*w0,256); % y-axis grid
[X,Y] = meshgrid(x,y); % create meshgrid
R = sqrt(X.^2 + Y.^2);
phi = atan2(Y,X) + l*atan2(R,z);
u = exp(-(X.^2 + Y.^2)/w0^2) .* exp(1i*phi);
figure;
angu = angle(u);
imagesc(x,y,angu);
colormap('hsv');
axis equal tight;
xlabel('x');
ylabel('y');
caxis
[min(angu(:)), max(angu(:))]
cb = colorbar;
cb.Ticks = [0 0.5 1];
cb.TickLabels = {'0', 'pi/2', '2pi'};
Your actual data being drawn ranges from pretty much to . imagesc() leaves the data alone but changes the CLim (color axes limits) to match the actual range of data. You then ask for tick marks at the absolute positions 0, 0.5, and 1, rather than at some kind of relative position.
You also label with 0 to even though the values are to
I would suggest that what you want is
w0 = 1; % beam waist
z = 0; % propagation distance
k = 2*pi/lambda; % wave number
l = 1; % topological charge
x = linspace(-5*w0,5*w0,256); % x-axis grid
y = linspace(-5*w0,5*w0,256); % y-axis grid
[X,Y] = meshgrid(x,y); % create meshgrid
R = sqrt(X.^2 + Y.^2);
phi = atan2(Y,X) + l*atan2(R,z);
u = exp(-(X.^2 + Y.^2)/w0^2) .* exp(1i*phi);
figure;
angu = angle(u);
imagesc(x,y,angu);
colormap('hsv');
axis equal tight;
xlabel('x');
ylabel('y');
caxis([-pi pi])
cb = colorbar;
cb.Ticks = [-pi 0 pi];
cb.TickLabels = {'-\pi', '0', '\pi'};
0 Comments
More Answers (0)
See Also
Categories
Find more on Contour Plots 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!