回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

#成长营第四期项目#深入学习天气数据可视化 简单

头像 JOVI 2024.01.13 153 2

【创意来源】

成长营第四期了,还差两块勋章,其中一块就是“行空板”勋章,那这次就好好玩“行空板”吧。

行空板的课程一共有15节课,如下图所示,基本完成了全部的学习内容。

image.png

作业打算将第12课《肺活量数据可视化报告》和第15课《天气助手》结合起来,行空板既可以显示不同城市的实况天气,又可以显示七日天气数据。

【作品原理】

第15课《天气助手》中的实况天气数据,是访问天气API网站(https://tianqiapi.com/)来获取的,访问特定的网址,就可以查看当前所在城市的天气数据。所得到的数据,其实就是一个Python中的“字典”,那么通过冒号前的“键”,就可以获得冒号后的“值”。

image.png

image.png

 

那么想要获得七日天气数据,就得输入对应七日的天气接口,当然也可以获取更多天数的天气数据,和获取七日天气数据的方法是相似的。

image.png

image.png

七日天气数据就不是单单一个“字典”了,分析这个结构,可以看出是每日的天气数据作为一个小“字典”,七日数据组合成一个Python中的“列表”,这个“列表”作为“键”名为“data”的“值”,再和其他数据组成一个大“字典”。

所以,要提取七日天气数据,就要用到Python中的“列表”。

 

材料清单

【设计过程】

1.提取数据原理

这一步最为关键,如程序所示:

首先将网址链接的七日天气数据作为一个大“字典”赋值给变量data,然后提取出“字典”里“键”名为“data”的数据赋值给“列表”,接着在“列表”里提取出“索引”为第一个(即“索引”为“0”)的数据作为一个小“字典”,最后在小“字典”里获取“键”名为“date”的“值”,这样我们就可以从七日天气数据里获取到我们想要的数据了。

image.png

 

2.展示实况天气

这里完成实况天气的界面,与第15课《天气助手》中的界面类似,只不过多了一个“日间温度”和“夜间温度”。因为七日天气数据中是区分日间温度和夜间温度的。

微信图片_20240115082002.jpg

下面是完成这个界面的程序段,参考课程中的程序,增加了“日间温度”和“夜间温度”。

image.png

添加切换城市按钮,实现开始显示当前所在城市天气,当切换不同的城市后,按下行空板A键更新对应城市天气。

image.png

 

3.获取七日数据

首先要将七日天气数据分成日间温度和夜间温度,分别存入相对应的列表中去。对七日天气数据提取出“字典”里“键”名为“data”的数据赋值给“列表”,然后遍历索引值从“0”到“6”,将相对应的“日间温度”和“夜间温度”数据存入相对应的列表。这里需注意,从天气数据中读取的数据是文本数据,需要将其转换成整数数据,才能在后续的图表中应用。

image.png

 

4.绘制折线图

参考第12课《肺活量数据可视化报告》的程序,区别在于这里为双折线图,日间温度和夜间温度做两条不同颜色的折线图。需要注意的是,其中映射范围为-20到50(大致的温度取值范围),另外因为是7个数据,为了美观,数据之间的宽度设为30单位。

image.png

如图所示,为双色折线图的效果。

图表背景需要根据实际设置为纵坐标-20到50,另外程序中用了回调函数做成的“折线图”按钮,按下“折线图”按钮,行空板上开始绘制七日日间温度和七日夜间温度数据的双色折线图。

微信图片_20240115092326.jpg

 

5.绘制柱状图

同样参考第12课《肺活量数据可视化报告》的程序,与课程中的区别不大,仅仅是需要将平均数进行保留小数点后一位的操作。

image.png

最后完成所有的程序,连接行空板,连接网络,进行调试:

微信图片_20240115091301.jpg微信图片_20240115091308.jpg

【学习收获】

这一期的行空板项目,通过课程的学习,基本学会了编程控制行空板的方法,学会了行空板上的屏幕交互、屏幕显示、光敏探测、蜂鸣器控制等功能,最后结合了几个的知识点,汇集出了一个简单且实用的小项目。

除此以外,在课程的基础内容获取天气API网站的数据上,提升了如何对获取的数据通过“字典”、“列表”等Python程序进行处理,获益匪浅。日后做项目,就可以通过各种各样的API网络资源来获取数据,极大拓展了项目资源的多样性。

 

附件为本项目的程序和截图,以及所涉及到的行空板图形化Python入门教程中的相关课程。

评论

user-avatar
  • DeadWalking

    DeadWalking2024.01.15

    学习一下!!

    1
    • JOVI

      JOVI2024.01.15

      互相学习