数据科学指南#基础篇 Matplotlib 入门
今天分享一个数据可视化的库:https://matplotlib.org/
Matplotlib 是什么?
matplotlib 是一个数据可视化的 Python 库。它提供了 plot(二维关系图)和多种样式图表生成的函数。
这样能够帮助开发者,更多时候是数据分析师快速的将数据展示为多种图表。
它也提供了 serve/static 等支持服务器渲染的特性,本文更多关注在如何进行数据展示,技术上的一些定制切入口(比如说展示中文,定制 x/y 轴和散点图的点)。
安装
pip install matplotlib
pip install PyQt5 #部分版本需要安装 PyQt5
小提示:
博主的 Mac 安装了 Python3.8.4 的,在运行 matplotlib 代码的时候提示了 PyQt 相关错误。
因为默认情况下,matplotlib 会使用系统默认的图形渲染库,启动过程发现使用了 Qt 的作为图形渲染底层。
更多信息参考:
https://matplotlib.org/stable/tutorials/introductory/usage.html#what-is-a-backend
查看安装效果
不同与 bokeh,matplotlib 并没有提供一个类似 bokeh 的命令。
所以直接跳到代码来看
执行 python 执行上述代码查看:
HelloWorld - 绘制一条折线图
上面已经简单展示过了一条折线图。
之前也写过 bokeh 绘制折线图:
https://xie.infoq.cn/article/c9b172d97e7f0ca812b02faa1
这里主要对比了前面介绍使用 matplotlib 实现(左边)跟前面 bokeh(右边)的实现代码对比:
代码解释:
line4:由于默认字体对中文支持不好会显示乱码,选择支持中文的字体(Aria 这个字体库还是比较常用的),否则会出现 RuntimeWarning: Glyph 40644 missing from current font, 可能是多种字体 RuntimeWarning: Glyph 其他编号 missing from current font。
line13 & line20: 设置 x,y 轴,并设置图解,同时需要 line20 显式调用 legend 函数,否则图解不会显示。
line24: 可以不用调用,因为我们这里使用 PyQt 的 UI 渲染并非交互式的。后面会展开在 Jupyter 中使用分享。
line25:展示折线图。
这里读者可以大概感受到 matplotlib 的强大(也是缺点吧),就是给了开发者太多选择了,可以细微定制到各个轴,表格图解(legend),字体等等。
对于线性图参考 subplots 的定制, 可以查看
matplotlib/axes/_axes.py
matplotlib/figure.py
很明显右边 bokeh 实现比较简洁,这是 matplotlib 基于 Qt UI 库渲染的效果:
HelloWorld - 绘制多条价格波动折线
这里 matplot 比 bokeh 更加严格,前篇博主在准备 y3 列数据的时候把"54.8"错误写成"54,8",bokeh 仅仅显示警告,而非曝出错误!
前面一条折线代码已经解析过了,多折线的代码总体上,只是在一条折线基础上准备了多两组轴数据,再调用 ax.plot 创建折线。
代码请自行阅读:https://gitee.com/levin6/data-science-stream/blob/main/lecture02/demoN.py
横轴跟纵轴长度不一样会出现以下错误, 调整到长度一致即可:
ValueError: x and y must have same first dimension, but have shapes (5,) and (7,)
HelloWorld - 绘制多款散点图
先看效果:
代码如下:
这段代码就比较直观了,比较特别的是可以使用 marker 标志符来显示散点。
散点图的更多定制可以查看: matplotlib/pyplot.py
读者可以修改 marker='d' 来显示 diamond 形状。
想要设置其他 marker 可参考 marker 源码。
先写到这里,上面也简单提到了 matplotlib 一些源码文件。
为什么只展示几个图?
Matplotlib 上面其实有很多的图形展示,也有示例代码,读者可以自行下载随便查看效果。
由于这个库包罗万象,所以博主认为有必要在技术上提出思考,展示几个图和代码的关联,帮助读者寻找一个图形组件定制的切入口,哪个源码文件等,这样可以脱离文档进行快速定制。
希望读者能够举一反三,来使用 matplotlib 来定制自己的图表。
后面会再出一篇关于这个库从分析角度来陈述使用和-一篇源码解读。
代码 REPO 持续更新
GitHub: https://github.com/levinliu/data-science-stream
Or Gitee: https://gitee.com/levin6/data-science-stream
这里展示了三种使用,分析的重点在于对数据和图表的把握。
更多内容请移步:https://matplotlib.org/
没有学习过 python 的可以参考一个更加基础的 Python 项目:https://blog.csdn.net/geeklevin/article/details/116111486?spm=1001.2014.3001.5501,在试验本文的代码。
对了,大家觉得有用可以一键三连,感谢!
博主会长期更新数据科学系列的文章欢迎关注。
版权声明: 本文为 InfoQ 作者【Levin】的原创文章。
原文链接:【http://xie.infoq.cn/article/1f66457cd94ec472347db8db8】。文章转载请联系作者。
评论