数据可视化界的小公主:cutecharts,入门 + 实战应用
这是我参与 11 月更文挑战的第 15 天。
今天给大家分享的这篇文章是 19 年写的,当时 pyecharts 作者陈老师和我分享了他们最新开发的动漫风格可视化库:cutecharts,我当即体验了下,效果确实杠杠的,可爱 好看 精炼,今天回顾了下,所有代码依旧能跑通(在 Python 3.10 上,19 年写的时候环境应该是在 Python3.7)。
如果本文,或者历史发布文章对你学习有所帮助,请给我一个免费的点赞;如果您觉得文章又什么描述问题或者知识点介绍问题,请在评论区评论指出,感谢大家支持。
一、前言
昨天,手机突然叮咚一响,微信群跳出一条消息,“@老表 新图表库 敲可爱的画风”,还有仓库链接,
我打开看了下,原来是陈健冬大佬有搞了个新的可视化库,这,我必须尝鲜啊。
cutecharts 项目地址:https://github.com/chenjiandongx/cutecharts/
记得给个 Star~
二、本文概要
Part one : 可视化库 cutecharts 基本使用介绍
Part two : 爬取中国电竞价值排行榜-外设排行榜,利用 cutecharts 数据可视化分析
Part three : 总结 抒情
Part one : 可视化库 cutecharts 基本使用介绍
1.cutecharts 安装
最简单的肯定是pip
安装:
当然,也可以进行源码安装:
如果是渲染成 html 文件,你还需要安装的第三方辅助库jinja2
,是基于 Python 的模板引擎,主要用于渲染可视化后的内容,最终形成可运行的 html 文件,当然,如果你不感兴趣,你不用过多了解,在安装 cutecharts 时会自动帮你安装上,但你得知道它是 unicode 编码,稍不注意,可能模板生成错误。
解决方法其实很简单,我们把渲染页面里的 js 脚本单独拿出来,放到 js 文件内,然后再在 html 页面内加载静态的 js 文件即可,说白了,就是不要让 jinja2 直接去渲染‘有问题’的 js 内容。
如果你嫌这个麻烦,还有一位朋友使用静态加载方法解决了该问题。
当然,没有遇到问题最好~我是直接用的 jupyter notebook,所以没有这个问题。
关于 jupyter notebook 安装使用,你可以看我之前分享的文章:Windows/Mac 安装、使用 Python 环境 +jupyter notebook
2.基本使用
目前 cutecharts 支持的可视化图像类型有:柱状图、折线图、饼状图、雷达图、散点图。 我想后续作者还会增加的,比如:词云图、3D 柱状图、条形图等等。 另外,项目里已经给我们提供了测试用例,所以我们学习的时候就不用再去自己写测试用例了,直接调用即可。
First : 柱状图
渲染引擎提供了两个
显示情况:
当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在 Github 里写的特别清楚,很方便阅读使用
内容来自:github cutecharts
Second : 折线图
显示情况:
当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在 Github 里写的特别清楚,很方便阅读使用
内容来自:github cutecharts
Third : 饼图
显示情况:
当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在 Github 里写的特别清楚,很方便阅读使用
内容来自:github cutecharts
Fourth : 雷达图
显示情况:
当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在 Github 里写的特别清楚,很方便阅读使用
内容来自:github cutecharts
Fifth : 散点图
显示情况:
当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在 Github 里写的特别清楚,很方便阅读使用
内容来自:github cutecharts
这里由于篇幅关系,本文只对 cutecharts 基本图像展现做了介绍,对于以上五个类型的可视化图像的具体参数没有做展开介绍,感兴趣的可以去 github 查看更详细内容:
Part two : 爬取中国电竞价值排行榜-外设排行榜,利用 cutecharts 数据可视化分析
【注】本文所有代码都是在 Jupyter Notebook 下运行,理论上移到本地开发工具也是可以运行的,如有问题,请留言评论。
截止到 2021.11.24 该网站外设入口已经不在了,但是数据接口还有,所以理论上以下代码大家运行不会有任何问题,当然,大家还可以用来分析其他页面数据,比如中国富豪榜单等,这类榜单数据大多是 table 标签包裹,且为静态加载,所以直接使用 pandas.read_html 即可很快获取到数据。
1.爬取数据
具体实现代码:
比较简单,因为该网站数据存储在表格(table)里,我之前介绍过 pandas 的 read_html 函数,可以快速的读取网页中 table 里的数据,具体见文章:数据分析从零开始实战 | 基础篇(四)- 后面分享。
观察上面获取到的数据,我们发现,奇数行的数据有问题,我看了下网页源码,确实页面的 table 写的有点问题,表头在重复出现,这个数据处理很简单,我们取出偶数行的正确数据即可。
我们会发现,数据里的综合指数
数值为NaN
,这是因为这一栏数据在网站中是以图像条显示的,存储在 i 标签的 width 里,这里我们就不获取了,要获取也是有办法的,比如:正则表达式,如果你感兴趣,可以去试试。
电竞与外设-键盘前 12 名在 3-7 月的所有的数据。
为了后续工作方便,我们最好是跑一次,然后把数据存到本地,方便读取处理。
2.数据可视化分析
获取了电竞与外设-键盘前 12 名在 3-7 月的所有的数据,共 60 条数据,方便数据读取显示,以下代码是在 Pycharm 上编写,理论上移植到其他开发工具或平台也可运行,如有问题欢迎留言交流。 Core issues: 键盘品牌分析
读取数据
Question one: 对品牌分析
读取数据
可视化
从这里看,我们可以发现达尔优、雷蛇、CHERRY、赛睿、海盗船都在排行榜上出现了 10 次,华硕 ROG、雷柏略差一些,只出现了五次。 我们再来结合各个品牌对应的产品排名来分析一下: 数据处理
可视化分析:
首先我们要知道,第一次统计的品牌名出现次数,表示品牌旗下产品上榜的数量,可能是有多种产品上榜,也可能是部分产品多次上榜,第二次统计的产品排名数和(为了方便展示,我把数除五了),表示该品牌所有上榜产品的排名和,如果做对比的话,应该是在第一个条件(品牌出现次数)相同情况下做对比。 从图中我们很容易看出,品牌`CHERRY`这个品牌出现次数多,而且排名靠前(因为排名数和低),其次是海盗船,第三可以算赛睿,雷蛇,达尔优,我们还可以看出雷柏和华硕 ROG 好像差不多。
接下来我们再看看品牌热度,我们直接看`综合指数`,当然,如果你在做数据分析工作中,肯定不会这么选择,你应该选择和你目的最贴切的数据项进行分析,甚至进行一些进阶算法,给每个指数项一定权重然后分析。
从网页上我们可以轻易看到,七月综合指数最高是的是CHERRY
旗下的MX8.0
,如果你感兴趣,可以像我什么一样,自己选 3-5 个热门产品,作出他们 3-7 月之间的综合指数或其他数据的变化图(一段时间内的变化,折线图会是一种比较好的显示方式)。
对于以上数据,你还有什么其他比较好的分析思路吗?欢迎你留言说说你的看法,由于时间和篇幅关系,我就不过多叙述了。
记住,本文主旨是给大家介绍cutecharts
这个新的 py 可视化库。
cutecharts 项目地址:https://github.com/chenjiandongx/cutecharts/
如果喜欢,请给个 Star。
Part three : 总结 抒情
哇,终于写完了,虽然本文技术含量不是那么高,但还是有很多地方是大家可以学习的,比如:认识个牛逼的人。 最后,我代替大家,其实也就是我自己想问的,问了陈键冬大佬三个问题,这里分享给大家:
Q:1. 目前 cutecharts 只支持部分图形,后续还会开发出其他图形支持吗?比如词云图?
A:cutecharts 是基于 chart.xkcd 开发的,目前 100% 支持其所有图形和配置项,如果 chart.xkcd 图表类型更新的话,cutecharts 也会同步更新的。
Q:2. 你觉得 cutecharts 和 pyecharts 的关系是什么?
A:cutecharts 和 pyecharts 属于同一类项目,都是使用 Python、Notebook+JS
实现数据的可视化,不过 pyecharts 目前有着更丰富的图形种类以及更多的配置项。
cutecharts 可以看做是精简版的 pyecharts,保留着 pyecharts 的所有核心功能,是学习 pyecharts 源码的很好的入手点。
Q:3. 你有没有什么想说的,对 cutecharts 和 pyecharts 的使用者?
A:开发一个类似的库并不难,无非是找到优秀的 JS 库,设计好 Python 接口,并将两者融合在一起。所以也希望有更多 Python 开发者能够参与到这方面的开发中来,为社区贡献出更多优秀的作品。
希望,我们都越来越优秀。
下期见,我是爱猫爱技术的老表,如果觉得本文对你学习有所帮助,欢迎点赞、评论、关注我!
版权声明: 本文为 InfoQ 作者【老表】的原创文章。
原文链接:【http://xie.infoq.cn/article/ef024af1c7187f0bd5dae903b】。文章转载请联系作者。
评论