Origin绘制风向、矢量时序图

华东师大的降龙同学提出一个风向图,下面这种,记录了不同时间风向、风速的变化。

风速:其实质是一个矢量(向量),既有方向(风向)又有大小(速率)。

1、数据表的准备

矢量通常用一个箭头表示,箭头指向是方向,箭头长短是大小。在绘图意义上,如果要绘制一个矢量,还必须知道一个起点,即矢量的位置(Position),也就是需要为每一个矢量设置一个起点(x,y),因此,在数据的准备上,我们需要时间x、任意y、风向、风速。

原始记录的时间以绝对时间(包含年月日时分秒)在绘图时并不方便,根据记录时间间隔为1 h,我们插入一列,将其set as X,并在f(x)单元格中输入i,创建一个从1到总行数递增的数据,将时间转换为相对时间(h)。

2、风向时序图的绘制

第一步:绘制矢量

选中time(h)、y、风向、风速这4列数据,点击plot菜单,找到带箭头的矢量绘图工具,直接出图。

我们得到下面这个效果:

大家有没有注意到,上面的动图演示中,谭编尝试Rescale调节纵轴的范围,矢量们都无动于衷,只有将矢量的放大倍数调为10才变大,而纵轴范围没有变化,好像这个纵轴与矢量大小无关。

确实无关,接下来,谭编给大家演示一下,这个纵轴是与矢量大小无关的,它只是定位矢量的。我们将Y列数据按照24 h为周期,填充上天数,即转换为实际的的日期。日期转换公式如下:

f ( i )=24+int((i-1)/24) , i=[1,192]

演示如下:

再次绘图得到下图的效果:

此时,纵轴范围自动更新了,变为24~31,即日期为24号到31号。但是,这些数量的x为小时,仍然按照1~192 h(总时长192 h),因此,需要对x转换为不连续的、从0~23 h重复的x列数据。转换公式:

f ( i )=i-int((i-1)/24)*24-1 , i=[1,192]

至于这个公式是怎么得到的,谭编摸索了10分钟,就是编程的思维。i是数据行号(从1开始的,如果是从0开始的,就没这么复杂了),算法就是取余数,不过谭编暂时没找到origin程序中取余数的代码,所以曲线救国,先对商取整再乘以24,再求行号跟这个结果的差,得到1~24的循环结果,但是我们要得到0~23,所以最后减1。

得到下图的效果:

还需要修改一下,横轴应该改为“一天中的时刻”,纵轴刻度值应该附加上前缀“2016/08/”。请看演示:

但是,大家有没有注意到,图例中的箭头长短是不是要跟矢量箭头的长短比例要相同呢?别看图例中已经有个箭头,它的长短并不能代表比例尺。需要寻找一个风向垂直于横轴的箭头,找到第几行(119行)对应的风速(8.2 m/s),画一个箭头跟它等长,然后查看画出的箭头的两个Y值,在Excel中十字交叉法计算一下ΔY,然后计算Y',填入到箭头的属性窗口的Y值中,即可绘制出一个5 m/s的比例。下面请看演示:

最终得到下图的效果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200109A0G00A00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券