Setting specific colorbar limits using coneplot

4 views (last 30 days)
My purpose is to produce 2d plots of vector winds with the vectors size and colour representing the strength of the vector. I've got fairly far with it. Currently I am using coneplot and have the below image with vector winds plotted as cones with colour and size representing the vector.
My issue is that I want multiple plots to represent winds the same i.e. equal strength winds represented by the same colour and size cone across all plots. I use subplot with the below code to plot the 4 plots. I want to now normalise these plots so that the size and winds across all plots are the same. Notice how in the plot all the colorbar scales are different. Any ideas how to do this?
Here is my code below:
% Vector field
[X Y Z] = meshgrid(0:11,0:31,[0 1]);
W = zeros(size(X)); % the third dim, unused here
% We do not want anything for Z=1
figure(100)
subplot(1,4,1)
U(:,:,1) = bias_U_amps_land_day(1:32,:);
V(:,:,1) = bias_V_amps_land_day(1:32,:);
U(:,:,2) = 0;V(:,:,2)=0;
coneplot(X,Y,Z,U,V,W,X,Y,Z,sqrt(U.^2+V.^2),1.5)
% view(2)
shading interp
colorbar
ylim([-1 32])
xlim([-1 11])
axis equal
set(gca,'FontSize',fonts,'FontName',fontn)
t = title('Land/Day');
set(t,'FontSize',fonts,'FontName',fontn)
y = ylabel('Model Level');
set(y,'FontSize',fonts,'FontName',fontn)
h = xlabel('Leadtime');
set(h,'FontSize',fonts,'FontName',fontn)
ylim([-1 32])
figure(100)
subplot(1,4,2)
U(:,:,1) = bias_U_amps_land_night(1:32,:);
V(:,:,1) = bias_V_amps_land_night(1:32,:);
U(:,:,2) = 0;V(:,:,2)=0;
coneplot(X,Y,Z,U,V,W,X,Y,Z,sqrt(U.^2+V.^2),1.5)
% view(2)
shading interp
colorbar
ylim([-1 32])
xlim([-1 11])
axis equal
set(gca,'FontSize',fonts,'FontName',fontn)
t = title('Land/Night');
set(t,'FontSize',fonts,'FontName',fontn)
h = xlabel('Leadtime');
set(h,'FontSize',fonts,'FontName',fontn)
ylim([-1 32])
figure(100)
subplot(1,4,3)
U(:,:,1) = bias_U_amps_ocean_day(1:32,:);
V(:,:,1) = bias_V_amps_ocean_day(1:32,:);
U(:,:,2) = 0;V(:,:,2)=0;
coneplot(X,Y,Z,U,V,W,X,Y,Z,sqrt(U.^2+V.^2),1.5);
% view(2)
shading interp
colorbar
ylim([-1 32])
xlim([-1 11])
axis equal
set(gca,'FontSize',fonts,'FontName',fontn)
t = title('Ocean/Day');
set(t,'FontSize',fonts,'FontName',fontn)
h = xlabel('Leadtime');
set(h,'FontSize',fonts,'FontName',fontn)
ylim([-1 32])
figure(100)
subplot(1,4,4)
U(:,:,1) = bias_U_amps_ocean_night(1:32,:);
V(:,:,1) = bias_V_amps_ocean_night(1:32,:);
U(:,:,2) = 0;V(:,:,2)=0;
c = coneplot(X,Y,Z,U,V,W,X,Y,Z,sqrt(U.^2+V.^2),1.5);
% view(2)
shading interp
colorbar
ylim([-1 32])
xlim([-1 11])
axis equal
set(gca,'FontSize',fonts,'FontName',fontn)
t = title('Ocean/Night');
set(t,'FontSize',fonts,'FontName',fontn)
h = xlabel('Leadtime');
set(h,'FontSize',fonts,'FontName',fontn)
ylim([-1 32])

Accepted Answer

Kelly Kearney
Kelly Kearney on 7 Apr 2014
You need to set the clim value of all your axes to be the same. It'll be easiest if you save the handles to your axes:
h(1) = subplot(1,4,1);
h(2) = subplot(1,4,2); % etc
set(h, 'clim', [0 3.5]);
  3 Comments
James
James on 8 Apr 2014
Actually this only changed the colour and not the size of the cones - do you know of anyway to change the size too?
Kelly Kearney
Kelly Kearney on 8 Apr 2014
Based on the docs, it looks like perhaps setting S to 0 would do that? Otherwise, the values are scaled based on the max u/v/z values in each plot.

Sign in to comment.

More Answers (0)

Categories

Find more on Vector Fields 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!