我正在尝试制作一个可以随时间显示风速和风向的绘图。一位同事建议在风速时间序列图上的每个点上添加一条指向风向的线。
我认为计算直线会相当简单。我使用了 here 中的三角公式.然而,情节并没有像我预期的那样显示。所有的线看起来都好像具有零斜率,而不是从 -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
And here is the result .
您会看到所有线条看起来都具有零斜率,因为您的轴具有非常不同的范围。
相反,根据您的轴范围创建比例因子。请注意,我只是估算了 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);
修改这些行后,生成的图形如下所示:
我是一名优秀的程序员,十分优秀!