python matplotlib库的基本使用
作者:TechFlow 发布时间:2023-07-20 11:22:45
matplotlib简介
如果你在大学里参加过数学建模竞赛或者是用过MATLAB的话,相比会对这一款软件中的画图功能印象深刻。MATLAB可以做出各种函数以及数值分布图像非常的好用和方便。如果你没用过呢也没关系,知道这么回事就好了。MATLAB虽然好用,但毕竟是收费软件,而且相比于MATLAB,很多人更喜欢Python的语法。
所以呢MATLAB就被惦记上了,后来有大神仿照MATLAB当中的画图工具,也在Python当中开发了一个类似的作图工具。这也就是我们今天这篇文章要讲的matplotlib,也是Python、数据分析以及机器学习领域当中使用最广泛的作图工具包,几乎没有之一。前段时间不是美国政府搞事情,导致MATLAB公司宣布对中国的几所高校禁止使用MATLAB嘛,有一些人就提出来说我们可以使用Python当中的一些开源工具代替,当然MATLAB当中还有很多其他厉害的功能,Python可能不一定能代替,但至少在作图这个领域是没问题的。
matplotlib 基本用法
matplotlib广泛流行的一个非常主要的原因就是它方便、好用,我们来看几个经典的例子就知道了,短短几行代码就可以作出质量非常高的图。
我们使用的是matplotlib这个包下的pyplot这个库,从名字上我们也看得出来它是Python库。如果你安装了Anaconda这样完整的Python包管理工具的话,那么这个包默认应该已经装好了。如果没有,可以使用pip安装一下,命令也非常简单。
pip install matplotlib
装好了包之后,我们通常的使用惯例是将它重命名成plt,所以如果你阅读一些源码以及其他大神的代码,作图的时候经常会出现plt.xxx,就是这么来的。
import matplotlib.pyplot as plt
plot当中有几种常用的作图工具,第一种是作折线图或者是曲线图的,叫做plot。第二种是作柱状图的叫做hist,第三种是作散点图的,叫做scatter,第四种是作饼状图的。除此之外还可以作一些三维的图像,但是一般日常当中使用得比较少,大部分是用来炫技的。
曲线图
plot其实是用来作曲线图的,采用的方法是描点呈现,它会将我们的数据点串联起来,成为一条光滑的曲线。当然,作折线、直线也都是可以的,最后成图的效果完全是由我们的数据决定的。
它的使用方法很简单,在最基本的用法当中,我们只需要传入两个list,分别代表x轴和y轴的值即可。比如我们要作出一个logistic的函数图像。我们可以这样:
x = np.linspace(-10, 10, 100)
y = 1 / (1 + np.exp(-x))
plt.plot(x, y)
plt.show()
在上面的代码当中我们首先使用numpy当中的linspace函数生成了一个-10到10之间的numpy数组。这个数组当中有100个点,在-10到10之间均匀分布。我们对它计算对应的logistic函数的值,也就是1 / (1 + np.exp(-x))。这个函数我想大家都应该很熟悉了,x是一个一百个点的list,对应的y也是一个一百个点的list。也就是说一个x对应一个y构成了一个点对,代表图中的一个坐标。
我们不需要做任何转化,只需要把这两个数组传入plt当中,它会自动替我们完成坐标的映射。最后呈现的效果如下。
我们可以看到作图的效果还是不错的,除了把图像完成的绘制出来之外,还替我们在坐标轴上画上了点位,方便我们查看数据。
直方图
hist可以用来绘制直方图,这也是我们非常常见的图像。在财经领域我们经常用直方图反应一个数据的走势,在数据分析和机器学习当中我们也经常用直方图来反应某一个特征或者是值的分布。
在直方图当中我们只需要传入一个数组,就是我们要求分布的数组,另外我们需要再输入一个参数bins,表示我们希望将数据分桶的数量。然后它会绘制出每个桶中数据数量的直方图,这样我们就可以很直观地看出分布来了。
x = np.random.normal(size=200)
plt.hist(x,bins=30)
plt.show()
这里我们调用numpy当中以正态分布概率随机的函数,得到的结果应该是正态分布的。
我们查看图像,这个结果和我们的预期基本吻合。
点状图
第三种图像叫做散点图,它反应的是每个点的分布情况。比如我们之前在介绍KNN和Kmeans模型的时候曾经都作过散点图,一个点代表一个样本,通过散点图我们观察的也是样本和数据分布的情况。但是和直方图相比它更加得直观,我们能直接看到分布,而不是一个分布的统计结果。
但是它也有缺点,缺点就是我们只能观察二维平面当中的点的分布,毕竟超过3维的维度就没办法绘制了。而且3维的数据分布也不是很好观察。
同样散点图的绘制也很简单,我们只需要调用scatter函数传入x和y的数组即可。
x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x, y)
这里我们的x和y都是随机分布,所以得到的结果是散乱没有规律的点。
饼状图
最后我们来看下饼状图,饼状图也很常用,虽然也是反映的数据分布,但是它更多是体现某一个值占的比例。通过饼状图,我们可以很直观地了解到这点。
我们可以传入一个list进入pie函数,plot会根据list当中值在总体的占比绘制饼状图。我们来看个很简单的例子:
a = np.array([0.5, 0.3, 0.2, 0.1, 0.8])
plt.pie(a)
得到的结果如下:
和之前的结果相比饼状图稍稍不清晰一些,因为它虽然用不同颜色区分了不同的区域的,但是我们很难直观地看出来每一个区域分别代表什么。这个问题是可以解决的,我们可以通过传入一些参数和设定来让它展示更多的信息,让数据变得更加生动以及清晰。
今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。
来源:https://www.cnblogs.com/techflow/p/13650290.html


猜你喜欢
- 第一次使用csdn写文章,写得不好还请见谅。(运行环境:python3.6)下了一个带密码的压缩包文件,作为一个刚学python的新手,想着
- 前言Python环境的搭建这里就不赘述了,有需要的小伙伴可以在网上搜罗出很多教程,注意安装PyChom编辑工具。这次我们主要讲一下几点内容:
- 关于Tensor的数据类型说明1. 32位浮点型:torch.FloatTensora=torch.Tensor( [[2,3],[4,8]
- 编写思路:把本地文件在客户端通过base64编码以后发送目的地.测试过程中,上传文件过大,导致超时不成功.后来经过改善.把编码分段发送.测试
- 程序图标主要作用是为了使该程序更加具象及更容易理解,除了上述的作用外,有更好视觉效果的图标可以提高产品的整体体验和品牌,可引起用户的关注和下
- Python 中的运算符什么是运算符?举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,"+" 称
- strip()方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本。语法以下是strip()方法的语法
- 假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温随时间(天)变化的某种规律?
- CentOS6.9+Mysql5.7.18源码安装,以下操作均在root用户下执行。1、安装依赖工具cmake make3.75+ gcc4
- 本文实例为大家分享了vue+element-ui+sortable.js实现表格拖拽的具体代码,供大家参考,具体内容如下效果如下:1.vue
- 1.mysql中or语法的使用,在mysql语法中or使用注意点。 项目遇到坑,遍历发放奖励数据查询错误!!!$sql = 'SEL
- 前两天我在工作中遇到这样一个问题,我们有一个程序是用来增量抽取EBS 中的表数据的,有的是全量抽取,即先删除原表中的数据,然后重新抽取数据,
- 在SQL语句中如果定义字符串,则字符串必须使用“'”就是单引号进行声明,但是如果现在所操作的数据库本身含有“'”单引号,就会
- Python中遍历列表有以下几种方法:一、for循环遍历lists = ["m1", 1900, "m2&qu
- where条件表达式--统计函数Select count(1) from student;--like模糊查询--统计班上姓张的人数sele
- 配置node服务器在购买好服务器后,用Xshell链接到服务器。1、安装nvmcurl -o- https://raw.githubuser
- python闭包关于闭包, 很多blog中都这样解释 :对于一个嵌套定义的函数,外层的函数的返回值是内层函数,而在内层函数中又引用了外层函数
- Microsoft SQL Server 2000 能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Se
- 1、此api已经关闭https://api.map.baidu.com/highacciploc/v1?qcip=220.181
- 本文以一段简单的监听鼠标、键盘事件的程序,实现获取用户的输入(比如登录某些网站的账号、密码)的功能。经测试,对于一台“裸奔”的电脑,完全能获