今天分享一个数据可视化的库:https://matplotlib.org/

Matplotlib是什么?

matplotlib 是一个数据可视化的 Python 库。它提供了 plot(二维关系图)和多种样式图表生成的函数。

这样能够帮助开发者,更多时候是数据分析师快速的将数据展示为多种图表。

它也提供了 serve/static 等支持服务器渲染的特性,本文更多关注在如何进行数据展示,技术上的一些定制切入口(比如说展示中文,定制x/y轴和散点图的点)。

安装

pip install matplotlibpip 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的命令。

所以直接跳到代码来看

import matplotlib.pyplot as plt
fig, ax = plt.subplots()  # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [4, 3, 2, 1])  # Plot some data on the axes.
plt.draw()
plt.show()

执行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 - 绘制多款散点图

先看效果:

代码如下:

import matplotlib.pyplot as plt#prepare some data
x = [2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2010]
y = [54, 55, 45, 47, 52, 56, 34, 39, 51, 63]area=500
plt.scatter(x, y, marker='.', c='red', s=area)plt.show()

这段代码就比较直观了,比较特别的是可以使用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更新的,后来参加新星活动没时间更了)。

数据科学指南#基础篇 Matplotlib 入门相关推荐

  1. Kubernetes入门指南-基础篇

    Kubernetes入门指南-基础篇 基础入门 kubernetes简介 kubernetes是一个平台 kubernetes架构 kubernetes不是什么 核心组件 kubernetes基本概念 ...

  2. Python科学计算基础篇

    关于Numpy Numpy是Python的一个矩阵类型,提供大量矩阵处理函数,内部通过C实现. 包含两种数据结构,数组array和矩阵matrix,其实就是array而已 构建数组array 通过tu ...

  3. python数据科学指南是什么_《Python数据科学指南》——导读

    前 言 如今,我们生活在一个万物互联的世界,每天都在产生海量数据,不可能依靠人力去分析产生的所有数据并做出决策.人类的决策越来越多地被计算机辅助决策所取代,这也得益于数据科学的发展.数据科学已经深入到 ...

  4. numpy基础篇-简单入门教程4

    numpy基础篇-简单入门教程4 np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100)rand_arr = np.random. ...

  5. Python的数据科学函数包(三)——matplotlib(plt)

    Matplotlib是Python最著名的2D绘图库 c opencv要比PIL, plt的速度更快一些 matplotlib中一张图的具体构造 如果将Matplotlib绘图和我们平常画画相类比,可 ...

  6. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇

    " 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...

  7. 《Python数据科学指南》——1.8 使用迭代器

    本节书摘来自异步社区<Python数据科学指南>一书中的第1章,第1.8节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区"异步 ...

  8. 《Python数据科学指南》——1.17 使用映射函数

    本节书摘来自异步社区<Python数据科学指南>一书中的第1章,第1.17节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区"异 ...

  9. 《Python数据科学指南》——1.16 使用lambda创造匿名函数

    本节书摘来自异步社区<Python数据科学指南>一书中的第1章,第1.16节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区"异 ...

最新文章

  1. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
  2. 谷歌x实验室汇聚顶尖人才,研发出了一种超前设备,直接打脸专家
  3. 从4篇顶会论文看Self-training最新研究进展
  4. 【select模块】select IO多路复用和select实现FTP
  5. ionic tab显示到顶部去了
  6. 【华为大咖分享】6.华为专家揭秘研发效能提升之道(后附PPT下载地址)
  7. AWK 批量杀进程号,好记性不如烂笔头
  8. (5)ISE14.7 开发流程(FPGA不积跬步101)
  9. C语言中字符串的处理方式
  10. 洛谷P1461 海明码 Hamming Codes
  11. android-生命周期和GC
  12. javascript createelement_如何创建与框架无关的JavaScript插件
  13. mysql动态sql语句_mysql 存储过程中使用动态sql语句
  14. 5G布控球星光级400万高清布控球智能布控球
  15. linux迅雷命令行,Linux系统下使用wine运行迅雷5的方法
  16. centos7 firefox 安装 java plugin方法
  17. 1500个字给你讲透什么是分账系统
  18. 工作奇谈——使用对称密匙加密数据
  19. 换位思考的反思与总结
  20. 【前后端分离登录流程】

热门文章

  1. Web服务器处理HTTP压缩之gzip、deflate压缩
  2. Elasticsearch的原理详解和使用
  3. 数据要素:以数据安全保护为前提的新型生产要素
  4. 2020 C++及系统软件技术大会全套PPT
  5. 浙江数字贸易交易会筹备期间,马云联合国分享数字经济浙江经验
  6. 学习笔记(1):【拯救者】javaSwing界面速成GUI(含实战)-01JFrame
  7. 怎样查看手机电脑上网时的IP
  8. 会讯易二维码读头(三)助力阿里云峰会活动流程
  9. 通过苹果设计和小米商业,重新理解互联网产品创新
  10. Android国际化数字点变成逗号的问题