python实现水质日历热力图
目的
使用 python 将站点水质等级以日历图形式可视化。实现快速掌握站点长期水质状况及时间变化趋势。
成果预览
功能特点
- 查询站点、任意时间段水质等级。
- 可自定义参与评价的因子
- 日历图有有图例,支持鼠标交互显示时间和水质等级
实现路径
环境及依赖
还是利用 python streamlit 框架,日历图需要依赖包为 pyecharts、streamlit_echarts。
1 |
|
代码
数据查询
根据自身情况,用数据库或者 Excel 都可以,只要有监测时间和监测因子就行。数据示例如下。
等级判断
evaluate_df(df, limits, standard_map) 函数根据以水质监测数据的 DataFrame、包含各因子评价限值的字典、包含评价等级与数值对应关系的字典来获得每个因子的数据等级。程序中加入了异常判断。
1 |
|
评价限值limits
这个之前有过介绍,是根据《地表水环境质量标准》(GB 3838-2002)要求建立的字典。如果需要自定义 limits 可以通过多选查询对应的限值来替换入参。
1 |
|
standard_map
评价等级与数值对应关系的字典
1 |
|
日历图
为了在 streamlit 实现日历图,尝试了很多依赖,streamlit 自身支持的较好的 plotly 没有日历图,matplotlib、camlp 都是静态的,不好看。最终选择了第三方包 pyecharts 绘制,streamlit_echarts 展示。注意最后一定要用 st_pyecharts () 来展示,才能在 web 中很好的显示。
1 |
|
参考文件
Streamlit ECharts Demo · Streamlit
Calendar - Calendar_label_setting - Document (pyecharts.org)
pyecharts/pyecharts-gallery: Just use pyecharts to imitate Echarts official example. (github.com)
andfanilo/streamlit-echarts: A Streamlit component to render ECharts. (github.com)
Examples - Apache ECharts
BY
纯个人经验,如有帮助,请收藏点赞,如需转载,请注明出处。
微信公众号:环境猫 er
CSDN : 细节处有神明
个人博客: https://maoyu92.github.io/