MATLAB Answers

0

Scatter plot with extra features

Asked by BeeTiaw on 13 Mar 2019
Latest activity Commented on by BeeTiaw on 19 Mar 2019
Hi expert,
I want to create a scatter plot where each individual points have one extra information which I also want to plot, i.e. their azimuth.
The data is shown below
data=[
% Temp Pres Azim
41 78 45
66 44 0
170 66 120
136 27 100
137 52 110];
The azimuth listed in the third column of the data is measured from the top of each data points (or circle) clockwise from [0,360deg].
How do I do this? The following plot has been generated manually by adding the blue line that shows the azimuth of each points.
Picture3.png
Thank you!

  0 Comments

Sign in to comment.

2 Answers

Answer by Guillaume
on 13 Mar 2019
 Accepted Answer

halflength = 2;
scatter(data(:, 1), data(:, 2), 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r')
for row = 1:size(data, 1)
line(data(row, 1) + sind(data(row, 3)) * [-halflength, halflength], ...
data(row, 2) + cosd(data(row, 3)) * [-halflength, halflength], ...
'Color', 'b');
end

  4 Comments

Show 1 older comment
+1
I think you need to add 'daspect([1 1 1])' to show the angle correctly in the figure.
Indeed, make sure the aspect ratio is is the same on both axis.
Thanks @Akira Agata!

Sign in to comment.


Answer by Akira Agata
on 13 Mar 2019

How about using quiver function? Here is an example.
data = [
% Temp Pres Azim
41 78 45
66 44 0
170 66 120
136 27 100
137 52 110];
u = 10*sind(data(:,3));
v = 10*cosd(data(:,3));
figure
scatter(data(:,1),data(:,2))
hold on
quiver(data(:,1)-u/2,data(:,2)-v/2,u,v,'AutoScale','off')
daspect([1 1 1])
xlabel('Temp','FontSize',12)
ylabel('Pres','FontSize',12)
box on
grid on
quiver.png

  0 Comments

Sign in to comment.