华东师大的降龙同学提出一个风向图,下面这种,记录了不同时间风向、风速的变化。
风速:其实质是一个矢量(向量),既有方向(风向)又有大小(速率)。
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的比例。下面请看演示:
最终得到下图的效果:
领取专属 10元无门槛券
私享最新 技术干货