数据科学指南#基础篇matplotlib入门(代码片段)

雷学委 雷学委     2022-12-07     641

关键词:

今天分享一个数据可视化的库: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的命令。

所以直接跳到代码来看

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更新的,后来参加新星活动没时间更了)。

python数据科学快速入门系列|06matplotlib数据可视化基础入门(代码片段)

这是机器未来的第52篇文章原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226《Python数据科学快速入门系列》快速导航:【Python数据科学快速入门系列|01】Numpy初窥——基础概念【Python数据科学快速入门系列|02... 查看详情

python数据科学快速入门系列|10matplotlib数据分布图表应用总结(代码片段)

这是机器未来的第59篇文章原文首发地址:https://robotsfutures.blog.csdn.net/article/details/127484292《Python数据科学快速入门系列》快速导航:【Python数据科学快速入门系列|01】Numpy初窥——基础概念【Python数据科学快速入门系列|02... 查看详情

python数据科学快速入门系列|09matplotlib数据关系图表应用总结(代码片段)

这是机器未来的第57篇文章原文首发地址:https://robotsfutures.blog.csdn.net/article/details/127116651《Python数据科学快速入门系列》快速导航:【Python数据科学快速入门系列|01】Numpy初窥——基础概念【Python数据科学快速入门系列|02... 查看详情

python机器学习入门——科学计算库(matplotlib)(代码片段)

目录Matplotlib基础实现一个简单的Matplotlib画图—以折线图为例matplotlib.pyplot模块图形绘制流程:折线图绘制与显示基本绘图功能基本绘图添加自定义x,y刻度添加网格显示添加描述信息图像保存一个坐标系中绘制多个图像多次plo... 查看详情

给深度学习入门者的python快速教程-numpy和matplotlib篇

本篇部分代码的下载地址:https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap5上篇:给深度学习入门者的Python快速教程-基础篇5.3Python的科学计算包-Numpynumpy(Numerical Pythonextensions)是一个第三方的Python包ÿ 查看详情

(数据科学学习手札82)基于geopandas的空间数据分析——geoplot篇(上)(代码片段)

...学绘制分层设色地图展开了深入的学习,而利用geopandas+matplotlib进行地理可视化固然能实现常见的地图可视化,且提供了操纵图像的极高自由度,但对使用者matplotlib的熟悉程度要求较高,制作一幅地图可视化作品往往需要编写较... 查看详情

给深度学习入门者的python快速教程-numpy和matplotlib篇

本篇部分代码的下载地址:https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap5上篇:给深度学习入门者的Python快速教程-基础篇5.3Python的科学计算包-Numpynumpy(Numerical Pythonextensions)是一个第三方的Python包,用于科... 查看详情

numpy学习:《python数据分析基础教程numpy学习指南第2版》中文pdf+英文pdf+代码

...础教程NumPy学习指南第2版》,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学 查看详情

大数据入门学习指南

 文章目录大数据入门学习指南前言一、大数据基础二、大数据必学Java基础三、ZooKeeper四、大数据环境搭建五、Hadoop六、Hive七、HBase八、Kafka九、Scala十、Spark十一、Flink大数据入门学习指南前言大数据入门核心技术栏目是为初学... 查看详情

win32编程api基础篇--1.入门指南根据英文教程翻译

入门指南本教程是关于什么的  本教程的目的是向你介绍使用win32API编写程序的基础知识(和通用的写法)。使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何可以连接API的语言,... 查看详情

数据分析之matplotlib篇(代码片段)

数据分析之matplotlib篇文章目录数据分析之matplotlib篇matplotlib简介matplotlib基础绘制多次图形和不同差异图形常用统计图对比绘制散点图绘制条形图绘制基本条形图绘制多次条形图绘制直方图属性设置1、位置`loc`2、线型`lin... 查看详情

数据分析之matplotlib篇(代码片段)

数据分析之matplotlib篇文章目录数据分析之matplotlib篇matplotlib简介matplotlib基础绘制多次图形和不同差异图形常用统计图对比绘制散点图绘制条形图绘制基本条形图绘制多次条形图绘制直方图属性设置1、位置`loc`2、线型`lin... 查看详情

数据科学入门---可视化数据(代码片段)

使用matplotlib.pyplot绘制线形图1frommatplotlibimportpyplotasplt23years=[1950,1960,1970,1980,1990,2000,2010]4gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]56#创建一副线形图,x是年份,y轴是GDP7plt.plot(years,gdp,col 查看详情

pandas高级数据分析快速入门之二——基础篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——统计分析篇Pandas高级数据分析快速入门之四——表内、表间数据处理篇Pandas高级数据分析快速入... 查看详情

入门python数据分析,请问看啥书籍?

...将科学计算及可视化的常见函数库,如numpy、scipy、sympy、matplotlib、traits、tvtk、mayavi、opencv等等,都进行了较为详细地介绍。由于涉及面太广,可能对于单个函数库来说还不够深入,但是这本书能够让人快速上手,全面了解科学... 查看详情

opencv入门指南第二篇缩放图像(代码片段)

【OpenCV入门指南】第二篇缩放图像上一篇《【OpenCV入门指南】第一篇安装OpenCV》讲解了如何在VS2008下安装和配置OpenCV,本篇将介绍使用OpenCV来缩放图片。首先介绍几个关键函数——cvResize和cvCreateImage《OpenCV入门指南》系列文章地... 查看详情

numpy快速入门(代码片段)

...录一.Python二.windows平台安装Python三.windows平台安装NumPy、Matplotlib、Scipy四.数组对象五.向量加法一.PythonNumPy是基于Python的,因此在安装NumPy之前,我们需要先安装Python。某些操作系 查看详情

numpy基础入门

...科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手。在以下的代码示例中,总... 查看详情