How to change the marking in colorbar?
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Athira T Das
am 20 Apr. 2023
Beantwortet: Walter Roberson
am 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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Contour Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!