wind vector arrows color coding
7 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
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
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"...
More Answers (1)
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'})
0 Comments
See Also
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!