当前位置: 首页 > 编程日记 > 正文

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

6841b31c4c3674b7b5974b696e4691bb.gif

作者 |俊欣

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

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

4666f2b18dbc9a9ea9b45415eff87864.png

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

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

介绍数据来源

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

9f5f615a10d5464fb871ec5cc0df7997.png

导入模块并且读取数据

我们导入需要用到的模块

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

可视化大屏的制作

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

5b3adc2763f16561c5dac9b558c66dfe.png

然后我们针对每一篇布局来编写代码,首先看到的是标题部分,我们通过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)

最后的成品如下图所示:

716bd65fd35f6961312642a5c6bccaa9.gif

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

18c66d1d0d5040dc0df23998618e0d47.gif

b5728a7750258245bc9445b102c0fc06.png

资讯

OpenAI开放GPT-3微调功能

技术

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

技术

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

资讯

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

4647cc1c3d019ff656cc186d7b675ed3.png

分享

46bd9d7fee7b06a5e1486794c7427936.png

点收藏

9e44bc90b6e612713c7495ed7ecc2bd1.png

点点赞

d4816bfc70da3ff8fe773dcc35a9b887.png

点在看

相关文章:

JavaScript实现冒泡排序

说明 对数组进行 冒泡排序 算是比较简单的&#xff0c;冒泡排序也是容易理解的一种排序算法了&#xff0c;在面试的时候&#xff0c;很可能就会问到。 实现原理 数组中有 n 个数&#xff0c;比较每相邻两个数&#xff0c;如果前者大于后者&#xff0c;就把两个数交换位置&#…

PHP--isset()和unset()函数的用法

isset(PHP 3, PHP 4, PHP 5 )isset -- 检测变量是否设置描述bool isset ( mixed var [, mixed var [, ...]])如果 var 存在则返回 TRUE&#xff0c;否则返回 FALSE。 如果已经使用 unset() 释放了一个变量之后&#xff0c;它将不再是 isset()。若使用 isset() 测试一个被设置成…

有关任意多条曲线的拟合度算法

为什么80%的码农都做不了架构师&#xff1f;>>> 在股市中&#xff0c;经常会遇到趋势的预判。所谓趋势&#xff0c;即相对而言的规律化的模式识别形态。形象来讲&#xff0c;就是个股的一段时间内的曲线分布状况。 那么&#xff0c;问题来了。 我们虽然可以在少量的…

从深度学习到深度森林方法(Python)

作者 |泳鱼来源 |算法进阶一、深度森林的介绍 目前深度神经网络&#xff08;DNN&#xff09;做得好的几乎都是涉及图像视频&#xff08;CV&#xff09;、自然语言处理&#xff08;NLP&#xff09;等的任务&#xff0c;都是典型的数值建模任务&#xff08;在表格数据tabular dat…

LHC大神问的矩阵转置问题

数学中线性代数中提到的矩阵转置&#xff0c;其实在我们的业务场景中也有需要的地方&#xff0c;比如LHC大神问到的这个问题 那么如何进行行列转换呢&#xff1f; 代码如下&#xff1a; <?php$arrayarray(部门1>array(费用1>100,费用2>200,费用3>300),部门2>…

不同机器互相调用WebService或者HTTP一定要telnet 测试

ping的通不一定就telnet的通 一定要#telnet 目标机器IP 目标机器端口如果一直是 Trying 目标IP那么不通如果是 Trying 目标IP Connection to 目标IP 说明通的

亮相百度WAVE SUMMIT+2021,Intel OpenVINO带来新气象

北京时间12月12日&#xff0c;百度WAVE SUMMIT2021深度学习开发者峰会在上海举办。这场属于AI的科技盛会之上&#xff0c;英特尔OpenVINO联手百度PaddlePaddle为开发者带来了一系列的技术内容&#xff0c;为开源生态构建持续合作&#xff0c;为产业进步提供新的动力。 OpenVIN…

精品德国软件 UltraShredder 文件粉碎机

出自德国的文件粉碎机&#xff0c;整合了回收站的相关操作&#xff0c;特点是兼容性好&#xff0c;支持9X以上的Win全系列&#xff08;不包括64位系统哦&#xff09;。该软件绿色免费&#xff0c;建议收藏于U盘^_^ 它和偶之前汉化的加密软件Omziff一样&#xff0c;来自XTort&am…

JavaEE 银联支付之手机控件支付-消费类交易

0. workflow app端request->后台封装参数->后台进行签名->请求银联平台->解析响应->响应需求信息 复制代码1. acp_sdk.properties ##############SDK配置文件&#xff08;证书方式签名&#xff09;################ # 说明&#xff1a; # 1. 使用时请删除后缀的…

php singleton()

common.php <?phpclass CC{private static $ins;public static function singleton(){if (!isset(self::$ins)){$c __CLASS__;self::$ins new $c;}return self::$ins;}public function EventResult($Id){return $Id;}}?>index.php <html><head><title…

2015 Multi-University Training Contest 2 1002 Buildings

Buildings Problems Link: http://acm.hdu.edu.cn/showproblem.php?pid5301 Mean: n*m列的网格&#xff0c;删除一个格子x,y&#xff0c;用矩形来填充矩阵。且矩形至少有一边是在矩阵的边缘上。 要使最大矩形的面积最小&#xff0c;求满足条件的矩形填充方式中面积最大的…

Meta 发布 Bean Machine 帮助衡量 AI 模型的不确定性

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; Meta 近日宣布发布 Bean Machine&#xff0c;这是一种概率编程系统&#xff0c;表面上可以更轻松地表示和了解 AI 模型中的不确定性。 在早期测试版中&#xff0c;Bean Machine 可用于通过自动的“不确…

【跃迁之路】【425天】刻意练习系列184—SQL(2018.04.06)

(跃迁之路)专栏 叨叨两句 技术的精进不能只是简单的刷题&#xff0c;而应该是不断的“刻意”练习该系列改版后正式纳入【跃迁之路】专栏&#xff0c;持续更新刻意练习——MySQL 2018.04.02 题目描述 DROP TABLE IF EXISTS test1;CREATE TABLE test1 (id int(11) NOT NULL AUTO_…

安利一个超好用的 Pandas 数据挖掘分析神器

作者 |欣一来源 |Python爱好者集中营今天小编继续来给大家介绍一款用于做EDA(探索性数据分析)的利器&#xff0c;并且可以自动生成代码&#xff0c;帮助大家极大节省工作时间与提升工作效率的利器&#xff0c;叫做Bamboolib。大家可以将其理解为是Pandas的GUI扩展工具&#xff…

PHP魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。 有七个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 _…

vim 打开Linux下文件每一行后面都有^M的样式

由于服务器不是我一个人在操作&#xff0c;在修改apache配置文件时发现了一个很奇怪的问题&#xff0c;vim编辑打开配置文件发现后面都有一个^M的标记 虽然不会影响服务的运行&#xff0c;但总感觉不对劲&#xff0c;所以在此我尝试用替换的方式来设置它 :%s/\^M//g 虽然也成功…

所有类是object的子类,但是又可以继承一个其他类解析

所有类的祖宗是object&#xff0c;所有类只能有一个父亲。Java的单继承指的是一个类不能有多个父亲&#xff0c;而C就能有好多父亲。举个例子&#xff1a;如果A 没有继承任何类&#xff0c;那他的类层次关系默认是 A -- Object如果A 继承了类B&#xff0c;那他的类层次关系变为…

Smarty中文手册,Smarty教程,Smarty模板的入门教材

Smarty中文手册,Smarty教程,Smarty模板的入门教材首先&#xff0c;这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的&#xff0c;不代表任何人的意见和观点。对他们的无私奉献精神&#xff0c;我们表示感谢&#xff0c;他们为Smarty模板的普及作出了重大的贡献&#…

380万播放量,也许是全网最火的机器学习视频

“秋名山上行人稀&#xff0c;常有车手较高低。如今无人车当道&#xff0c;全是 AI 老司机。”且问 AI 老司机表现如何&#xff1f;可灵活转弯&#xff0c;控速自如&#xff1a;可行云流水&#xff0c;沿最优路线过弯&#xff1a;更可多次打圈&#xff0c;绕多少下也不在话下&a…

《SQL Server 管理与维护指南》章节目录

http://www.mssqlmct.cn/?post2转载于:https://blog.51cto.com/mssqlmct/1677763

Java并发之synchronized

synchronized关键字最主要有以下3种应用方式 修饰实例方法&#xff0c;作用于当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁&#xff1b;实例锁&#xff0c;一个实例一把锁 修饰静态方法&#xff0c;作用于当前类对象加锁&#xff0c;进入同步代码前要获得当前类对…

java 产生的固体物的基础上 增删改的SQL声明

经过多次修改。最后版本。package com.power.sql;import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.Vector;import org.apache.commons.lang3.reflect.FieldUtils; /*** author Gary Huang* 博客地址&#xff1a;…

顺络新能源汽车技术研讨会圆满落幕

2021年12月11日&#xff0c;由深圳顺络电子股份有限公司主办、中国传感器与物联网产业联盟和大湾区新能源汽车产业技术创新联盟协办的新能源汽车技术研讨会在深圳汉普斯酒店隆重召开&#xff0c;广汽研究院智能网联中心总师廖磊先生、比亚迪汽车工程研究院副总工程师顾建军先生…

电信的 DNS 服务器地址

上海电信 202.96.209.5202.96.209.6202.96.209.133202.96.209.134

系统利益相关者描述案例

利益相关者 主要目标 态度 主要关注点 约束条件 厅长 监督河北省创新事业的发展 强烈支持积极推动河北省科技创新平台的建立&#xff0c;促进河北省科技创新事业的发展 如何优化管理&#xff0c;如何保证推动创新发展事业工作的高效性 无 平台主任&#xff08;院长…

CentOS6怎么样设置ADSL上网

首先安装好CentOS6以后要安装rp-pppoe这个软件&#xff0c;centos之前的版本所adsl-setup这个命令安装&#xff0c;到centos6改了。 需要光驱内放好CentOS安装盘 挂载光盘 #mount /dev/cdrom /media 找出文件路径 # find /media -name rp-pppoe* 这个文件没有依赖项&#xff0c…

小冰数字孪生主播正式上线 全球首创全流程无人化AI直播

12月20日&#xff0c;小冰公司公布全新的数字孪生虚拟人技术&#xff0c;并联合每日经济新闻&#xff0c;将首批应用该技术的虚拟主持人&#xff0c;与“每经AI电视”一同正式上线。与其他技术相比&#xff0c;小冰框架不仅将虚拟人的整体自然度提升至与真人难以分辨的程度&…

二分搜索 POJ 2456 Aggressive cows

题目传送门 1 /*2 二分搜索&#xff1a;搜索安排最近牛的距离不小于d 3 */4 #include <cstdio>5 #include <algorithm>6 #include <cmath>7 using namespace std;8 9 const int MAXN 1e5 10; 10 const int INF 0x3f3f3f3f; 11 int x[MAXN]; 12 int n,…

路由策略与策略路由的区别。

这两中方案都是为了控制网络流量的可达性或调整网络流量的路径&#xff1a; 一、路由策略。&#xff08;Route-Policy&#xff09;路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略。 二、策略路由。&#xff08;…

Python 刷英语六级段落匹配仅需 3 秒?

作者 | 叶庭云来源 | AI庭云君一、前言 一年二度的四六级考试就此落下帷幕&#xff0c;本次考试体验感极强&#xff0c;反手就是一个 "五星好评"本文利用 Python 的模糊匹配方法来刷英语六级段落匹配&#xff0c;仅需要3秒&#xff01;Python的 FuzzyWuzzy 库&#x…