作者 |俊欣

来源 |关于数据分析与可视化

“碳达峰、碳中和”是2021年政府在不断强调与非常重视的事儿,那什么是“碳达峰”、什么又是“碳中和”呢?这里小编来为大家科普一下,所谓的“碳达峰”指的是在某一时间点,二氧化碳的排放不再达到峰值,之后逐步回落。

而“碳中和”也就意味着企业、个体与团体在一定时间内直接或间接产生的温室气体排放总量,通过植树造林、节能减排等形式,抵消自身产生的二氧化碳排放,实现二氧化碳的“零排放”。

今天小编就用Python来制作一张可视化大屏,让大家来感受一下近百年来二氧化碳排放的趋势以及给我们所居住的环境造成了什么样的影响。

介绍数据来源

本地可视化大屏中引用的数据来自于由英国牛津大学知名教授创办的网站“用数据看世界(Our World in Data”,里面收入了各个学科的数据,包括卫生、食品、收入增长和分配、能源、教育、环境等行业进行了分析与可视化展示,十分地全面,并且当中的元数据开放在Github当中

导入模块并且读取数据

我们导入需要用到的模块

import streamlit as st
import plotly.express as px
import pandas as pd

我们这次是用到streamlit模块来制作可视化大屏,该模块是基于Python的可视化工具,最初开发出来的目的是给机器学习和数据科学团队使用的。同时我们用plotly.express模块来绘制各种图表,因此图表是具备交互性的,pandas模块来读取数据

@st.cache
def get_data():url_1 = 'https://raw.githubusercontent.com/owid/owid-datasets/master/datasets/Climate%20change%20impacts/Climate%20change%20impacts.csv'url_2 = "https://github.com/owid/co2-data/raw/master/owid-co2-data.csv"df_1 = pd.read_csv(url_1)df_1_1 = df_1.query("Entity == 'World' and Year <=2021")df_2 = pd.read_csv(url_2)return df_1_1, df_2

可视化大屏的制作

然后我们来制作整个可视化大屏,首先我们先确认好可视化大屏的布局,如下图所示

然后我们针对每一篇布局来编写代码,首先看到的是标题部分,我们通过streamlit模块当中的markdown方法来实现即可

st.markdown()

然后根据上面的布局设计,我们这么来编写代码

col2, space2, col3 = st.columns((10,1,10))with col2:year = st.slider('选择年份',1750,2020)...with col3: ...selected_countries = st.multiselect('选择国家',countries,default_countries)...col4, space3, col5, space4, col6 = st.columns((10,1,10,1,10))
with col4:st.markdown("""## 二氧化碳和全球变暖之间的关系""")with col5:st.subheader(" 副标题一 ")...with col6:st.subheader(" 副标题二 ")...

我们这里使用columns方法来将页面均匀的分成若干列,并且给定特定的宽度,当然每列之间还需要留一点空隙,从美观程度上来考虑,因此才有了变量space对应的是宽度1的空隙

col2, space2, col3 = st.columns((10,1,10))

然后我们针对分割开来的每个区域进行图表的绘制,例如左上方的世界地图,我们用plotly.express当中的choropleth方法来绘制,另外我们添加了时间轴,通过调用streamlit模块当中的slider方法来实现

with col2:year = st.slider('选择时间', 1750, 2020)fig = px.choropleth(df_co2[df_co2['year'] == year], locations="iso_code",color="co2_per_capita",hover_name="country",range_color=(0, 25),color_continuous_scale=px.colors.sequential.Reds)st.plotly_chart(fig, use_container_width=True)

而例如右上方的折线图,同样也是调用plotly.express模块来实现的,其中多选框则是调用了streamlit模块当中的multiselect方法,代码如下

with col3:default_countries = ['World', 'United States', 'United Kingdom', 'EU-27', 'China', 'Canada']countries = df_co2['country'].unique()selected_countries = st.multiselect('选择国家或者区域性组织', countries, default_countries)df3 = df_co2.query('country in @selected_countries')fig2 = px.line(df3, "year", "co2_per_capita", color="country")st.plotly_chart(fig2, use_container_width=True)

最后的成品如下图所示:

从上面绘制的图表中我们能够看到的是,美国以及加拿大这两国家二氧化碳的排放量一直都很高,超过了包括欧盟、英国以及中国在内的主要经济体。当然近些年各个国家的政府也对该问题相当的重视,制订了相对应的节能减排的应对措施。

资讯

OpenAI开放GPT-3微调功能

技术

LTSM实现多元素时序数据预测

技术

9个好用的python操作文件方法

资讯

云游戏、AR等给元宇宙提供了哪些?

分享

点收藏

点点赞

点在看

不到 100 行 Python 代码教你做出精美炫酷的可视化大屏相关推荐

  1. 【Python】用Pyecharts制作炫酷的可视化大屏

    前两篇Pyecharts的文章来帮我们简单的梳理了一下可以用Pyecharts来绘制哪些图表之后,本篇文章我们用pyecharts里面的一些组件,将绘制的图表都组合起来 首先Grid组件 首先介绍Py ...

  2. 100个必会的python脚本-100行Python代码实现自动抢火车票(附源码)

    前言 又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 chrome浏览器及下载chromedr ...

  3. c语言微信挑一挑编程,100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  4. 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  5. python模拟别人说话的声音_如何用100行Python代码做出魔性声控游戏“八分音符酱”...

    最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩). 这个游戏叫做<不要停!八分音符酱♪>.它是一款来自岛国的恶搞游戏,主角是一 ...

  6. 100 行代码,轻松实现动态炫酷的可视化图表!

    今年春节那段时间,疫情依旧是反反复复,几个城市都出现了确诊病例,感觉又回到了之前每天看信息图的那会儿. 来源:北京大学可视化与可视分析实验室 这种信息图跟普通的网页差别很大,无法用传统 Web 开发技 ...

  7. Python项目实战 —— 02. 疫情前后全国人口流动可视化大屏

    Python项目实战 Python项目实战--目录 Python项目实战 -- 02. 疫情前后全国人口流动可视化大屏 一.背景 二.数据分析 2.1 数据处理 2.2 画图 2.3 展示 三.可视化 ...

  8. 100行python代码实现五子棋-教程

    五子棋是是一种两人对弈的纯策略型棋类游戏. 五子棋有两种玩法.玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜.玩法二:自己形成五子连线就替换对方任意一枚棋子.被 ...

  9. 几行Python代码帮你生成精美词云图

    近年来,互联网.新媒体等行业报告中经常会看到一些精美的词云图.它的原理其实比较简单,主要是对文章内容进行分词,统计各个词出现的次数,然后根据出现的次数,设置显示样式,例如大小.颜色等,从而使读者快速领 ...

最新文章

  1. CentOS7 开放端口
  2. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
  3. mysql备份工具Xtrabackup增量备份还原图解
  4. malloc,calloc,realloc
  5. Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
  6. VHDL----基础知识1
  7. Oracle 12C -- 预定义audit policies
  8. 启动Spark出现Operation category READ is not supported in state standby
  9. php pdo mysql类源码_完整示例php+pdo实现的购物车类
  10. 图像空域增强:灰度映射法
  11. 力扣刷题-题目以及答案
  12. 【笔记】【数字逻辑】可能是最详细的二进制、八进制、十进制、十六进制进制转换笔记
  13. python123货币转换器_python货币转换
  14. SAP系统架构和技术平台
  15. 7月算法训练------第十四天(栈)解题报告
  16. jQuery(javascript) 与Vue有什么区别
  17. 虚函数与虚函数表剖析(动多态)
  18. win10打开蓝牙,蓝牙开关消失,蓝牙和其他设备设置,蓝牙开关不见了
  19. 微信小程序云开发-内容管理系统(CMS)小案例
  20. linux 浏览器问题

热门文章

  1. 软件性能测试主要看什么指标
  2. Zabbix 3.0 从入门到精通(zabbix使用详解)
  3. .NET MVC+ EF+LINQ 多表联查VIEW显示列表
  4. Mybatis缓存机制理解及配置
  5. 更加安全的存取账户密码
  6. [日记]一个人去散步
  7. html5转apicloud,使用APICloud编写优雅的HTML5代码
  8. 自动驾驶软件工程之局部规划
  9. 自动驾驶技术现状与需求分析
  10. redhat linux系统补丁,如何在CentOS和RHEL系统上安装或自动更新安全补丁