我试图制作一个可以随时间显示风速和风向的情节。一位同事建议在风速的时间序列图上添加一条指向风向的线到每个点。
我认为计算这条线会相当简单。我使用了来自here的trig公式。然而,情节并没有像我期望的那样显示出来。所有的线条看起来都像零斜率,而不是从-1到1。
这是我的代码:
wdates = [ 7.357325746759259E5; 7.357325747916667E5; 7.357325749074074E5; 7.357325750231481E5; 7.357325751388889E5; 7.357325752546296E5; 7.357325753703704E5; 7.357325754861111E5; 7.357325756018518E5; 7.357325757175926E5; 7.357325758333333E5; 7.357325759490741E5; 7.357325760648148E5];
topspeed = rand(size(wdates)) * 2;
toprdir = [0 pi/6 pi/4 pi/3 pi/2 2*pi/3 3*pi/4 pi 5*pi/4 4*pi/3 3*pi/2 5*pi/3 7*pi/4];
toprdir = toprdir';
h = figure(1);
plot(wdates,topspeed,'s');
datetick('x')
hold all;
%find slope
topslopes = tan(toprdir);
for i=1:length(wdates)
%find start point.
clear x;
clear y;
x(1) = wdates(i);
y(1) = topspeed(i);
d = .0001;
%x(2) = d * cos(atan(topslopes(i))) + x(1); %did not work?
%y(2) = d * sin(atan(topslopes(i))) + y(1); %did not work?
x(2) = d * cos(toprdir(i)) + x(1);
y(2) = d * sin(toprdir(i)) + y(1);
plot(x,y);
end
答案 0 :(得分:2)
您看到所有线条看起来都有零斜率,因为您的轴的范围非常不同。
而是根据轴范围创建缩放系数。请注意,我只是近似dy,dx的值,但您应根据每个轴的数据和物理尺寸计算它们应该是什么(例如,确保45度线看起来像45度)。您可以使用"轴方形"使尺寸相同。
dy = 1;
dx = 0.001;
x(2) = dx * cos(toprdir(i)) + x(1);
y(2) = dy * sin(toprdir(i)) + y(1);
修改了这些行后,生成的图形如下所示: