wind vector arrows color coding

7 views (last 30 days)
Hi i have data of wind direction , speed, and temperature.
wdir = [45 90 90];
knots = [6 6 8 ];
temp=[10 5 -2];
Using the following lines i can get the compass plot for wind direction and speed.
rdir = wdir * pi/180;
[x,y] = pol2cart(rdir,knots);
compass(x,y);
But is there any way to color code the arrows using the temp values, and give the legend of the temp color code. Seeking help from matlab experts, Thanks in advance.

Accepted Answer

Kelly Kearney
Kelly Kearney on 14 Feb 2014
Compass produces individual line object, not tied to a colormap, so you'll have to do the color-matching yourself:
wdir = [45 90 90];
knots = [6 6 8 ];
temp= [10 5 -2];
rdir = wdir * pi/180;
[x,y] = pol2cart(rdir,knots);
h = compass(x,y);
tcol = interpcolor(temp, jet(64), [-5 10]);
set(h, {'color'}, num2cell(tcol,2));
colormap(jet);
set(gca, 'clim', [-5 10]);
colorbar;
Find interpcolor here. Note that the colormap and colorbar in the above figure are for reference only; they don't actually link to the colors of the arrows.
(Also, you really shouldn't accept an answer if it doesn't actually answer your question).
  5 Comments
mavelli
mavelli on 29 Mar 2014
hI KELLY the solution worked perfectly for me. Thank a lot.Can you fix the concentric circles inside the compass plots ie the wind speed can be limited and also the thickeness of the arrows. I tried the Linespecs but it did not work.
h = compass(x,y,'LineWidth',3);
Kelly Kearney
Kelly Kearney on 31 Mar 2014
Unlike most plotting functions, the compass function doesn't accept parameter/value pairs as an input, only a single Linespec to set color and linestyle. So you have to do that after the fact:
h = compass(x,y);
set(h, 'linewidth', 3);
Not sure what you mean by "fix the concentric circles"...

Sign in to comment.

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 14 Feb 2014
wdir = [45 90 90];
knots = [6 6 8 ];
temp=[10 5 -2];
rdir = wdir * pi/180;
[x,y] = pol2cart(rdir,knots);
h=compass(x,y);
set(h(1),'color','r')
set(h(2),'color','b')
set(h(3),'color','g')
legend({'h1' 'h2' 'h3'})

Categories

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