1. 首页
  2. 杂谈

火爆全网的动态柱状图你知道怎么做么?

点击数:78

首先直接放成果,如果对如何制作不感兴趣的看完就可以撤了。

PS:博客站放不了视频,这个太尴尬了,视频已提交 B 站审核,想看视频的同学等 B 站审核过了会来这里补链接。

本次的演示选取的数据还是当前的疫情数据,数据来源是 AkShare ,具体的安装方法就不介绍了,有需要的同学可以访问中文文档:https://www.akshare.xyz/zh_CN/latest/introduction.html

直接看下如何取出数据:

import akshare as ak
covid_19_history_df = ak.covid_19_history()
covid_19_history_df.to_csv('data.csv')

因为我这里的网络不好,这个代码我等了 5 分钟还没下载好,最后的解决方案还是通过手动完成的。

通过阅读文档发现,这里实际上封装的是 GitHub 的一个数据源(怪不得这么慢):https://github.com/canghailan/Wuhan-2019-nCoV ,这个项目的介绍中写的非常清楚,可以通过接口的方式获取数据:

https://raw.githubusercontent.com/canghailan/Wuhan-2019-nCoV/master/Wuhan-2019-nCoV.csv
https://raw.githubusercontent.com/canghailan/Wuhan-2019-nCoV/master/Wuhan-2019-nCoV.json

上面这两个地址可以分别获得 csv 格式和 json 格式的数据,网络不好的同学可以直接将这两个链接丢到下载工具中下载。

拉取到的部分数据如下:

火爆全网的动态柱状图你知道怎么做么?

原始数据 csv 文件已上传代码仓库,有需要的同学可以获取。

这样,我们就获得了需要的数据,接下来就是对数据做一些处理,因为这个数据的统计颗粒度并不是以国家来的,所以我们需要对数据做一些简单的处理。

我这里直接将刚才得到的 cvs 文件导入进数据库 MySQL 对数据进行整理,当然,同样也可以使用 Pandas 对数据进行整理,手段不是关键,达到目的就好。

现在数据我们有了,接下来是动态柱状图的工具,下载地址同样为 GitHub ,是由 B 站大佬 「Jannchie见齐」 开源提供。

GitHub 地址: https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js

火爆全网的动态柱状图你知道怎么做么?

用法十分简单,只需打开 src 目录下的 bargraph.html 。然后点击页面中间的选择文件按钮,接着选择 csv 格式的数据文件,便可以看到可视化的结果。

并且这个项目十分贴心的为我们准备了一个样例,就是 src 目录下的 example.csv 。

我们这里打开这个文件,看下数据的格式,我们需要将我们上面获得的数据整理成同样的格式。

火爆全网的动态柱状图你知道怎么做么?

可以看到,这里需要 4 列数据,具体的含义如下:

name type value date
名称1 类型1 值1 日期1
名称2 类型2 值2 日期2

文档上也对数据格式做了说明:

其中「名称」会出现在柱状图的左侧作为 Y 轴,而「类型-名称」会作为附加信息出现在柱状图上。

类型与柱状图的颜色相关,建议命名为不包含空格或者特殊符号的中英文字符。

值与柱状图的长度绑定,必须是整数或浮点数。

日期建议使用的格式为 "YYYY-MM-DD" 。

目标数据有了,接下来的事情就简单了,只需要写一条简单的 SQL 语句,将得到的结果导出成 csv 文件即可。

需要使用到的 SQL 语句如下:

SELECT a.country AS name, a.countryCode AS type, a.confirmed AS value, a.date AS date FROM <code>data</code> a WHERE a.provinceCode IS NULL GROUP BY a.date, a.countryCode ;

这句 SQL 的思路是先将数据按照 date 日期进行分组,然后再按照 countryCode 国家代码进行分组,然后将我们需要的数据取出来即可。

中间还遇到了一点小问题,因为这个数据中国的数据是带有省市区的数据的,我们最终并不需要省市区的数据,观察数据后,可以发现,每天的数据中,中国的疫情数据会有一个总数据,这条数据上是没有省市区的字段的,再看下外国的数据,也没有省市区的字段,所以这里我加了一个条件,将所有有省市区字段的数据全都过滤掉,剩下的数据就是我们需要的。

我这里使用的连接数据库的工具是 Navicat ,导出成 csv 文件相对比较简单,只需要选择导出结果,就可以进入一个导出的指引页面:

火爆全网的动态柱状图你知道怎么做么?

接着跟着指引一步一步操作,将数据导出来就好了,这个处理过的数据我也同样上传至代码仓库了,有需要的同学自取。

现在数据有了,我们打开刚才从 Github 上下载的工具,在浏览器中打开 bargraph.html 页面,可以看到这么一个页面:

火爆全网的动态柱状图你知道怎么做么?

然后点击页面上的那个选择文件,选择到刚才我们导出来的 csv 文件,就可以看到这个火遍全网的动态柱状图了。

接下来就是使用录屏软件,将这一段视频录下来,然后再找一个视频编辑软件,配上合适的 BGM ,一个高大上的视频就这么做好了。

顺手推荐两个我常用的软件好了,录屏软件我选择的是 oCam ,视频编辑软件,在 PC 端我一般是使用 Adobe 的 Adobe Premiere Pro ,这俩软件基本上都是属于傻瓜操作,使用灰常简单。

怎么样,是不是感觉很简单,感觉简单赶紧自己动手试试看吧。

代码仓库

代码仓库-Github

代码仓库-Gitee

转载声明:本博客由极客挖掘机创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code