今天是数据处理专题的第9篇文章,在之前的8篇文章当中我们已经介绍完了pandas这个库的一些基本用法,我们先把一些冷门的高级用法放一放,先来给大家介绍一下另外一个很有用的数据分析库——matplotlib

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函数的值,也就是y=11+e−xy = \frac{1}{1 + e^{-x}}y=1+e−x1​。这个函数我想大家都应该很熟悉了,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)

得到的结果如下:

和之前的结果相比饼状图稍稍不清晰一些,因为它虽然用不同颜色区分了不同的区域的,但是我们很难直观地看出来每一个区域分别代表什么。这个问题是可以解决的,我们可以通过传入一些参数和设定来让它展示更多的信息,让数据变得更加生动以及清晰。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。

原文链接,求个关注

matplotlib | Python强大的作图工具,让你从此驾驭图表相关推荐

  1. python os.system关闭log_又到牛市!带你学习一个python强大证券数据分析工具

    前言 A股市场随着这段时间的火热翻腾,牛市又要降临的样子!如何能找出价值和价格匹配,还未被热炒的低估股票?还是来识别价值和价格已然背离的虚火股票?无疑,通过股票本身指标来找是很靠谱的.但这些指标计算复 ...

  2. python证券_又到牛市!带你学习一个python强大证券数据分析工具

    前言 A股市场随着这段时间的火热翻腾,牛市又要降临的样子!如何能找出价值和价格匹配,还未被热炒的低估股票?还是来识别价值和价格已然背离的虚火股票?无疑,通过股票本身指标来找是很靠谱的.但这些指标计算复 ...

  3. 网络拓扑图画图工具_一款功能强大的免费在线作图工具

    小金子 读完需要 2分钟 速读仅需 1 分钟 大家好,我是你们的小金子. 今天推荐的工具是「ProcessOn」,一款强大的在线作图工具. 1.免费在线作图.实时协作 ProcessOn 支持: 思维 ...

  4. 在线就能用的免费作图工具,我给你找好了

    大家好,我是你们的小迷妹,今天在逛社区的时候,又又又发现了一款好用的工具,于是写下来,推荐给你们哦. 不知道大家在做事情,做项目,工作中是不是会遇到很多繁琐的事情在,这个时候特别需要一个工具,来将这些 ...

  5. Process On 免费在线作图工具

    Process On 免费在线作图工具 一.描述 ProcessOn是一个在线作图工具的聚合平台,它可以在线画流程图.思维导图.UI原型图.UML.网络拓扑图.组织结构图等等,您无需担心下载和更新的问 ...

  6. python数据整理--绘图工具matplotlib

    1. matplotlib是一种python底层的绘图工具. 我们可以将爬虫爬取的数据,来进行分析绘制成更直观的图像,便于分析与整理. 2. matplotlib的基本要点: (1). 如何设置图片的 ...

  7. python实现类似于visio_9款在线作图工具:那些可以替代Visio的应用

    ​ Visio是付费软件,通常会遇到下载.安装以及"授权"等各种问题.今天介绍的几款在线作图工具,帮你抛开下载.安装.授权等各种烦恼. 1. LucidChart LucidCha ...

  8. python 机器学习_基于 Python 语言的机器学习工具Sklearn

    本篇介绍了Sklearn机器学习基础,从Sklearn的简介,模块以及与tensorflow的优劣势对比来了解基于Python语言的机器学习工具.    01.Sklearn简介 sklearn(sc ...

  9. 「合规」震惊!地图可视化竟能如此玩,零门槛,全免费,效果远胜主流作图工具!...

    在数据可视化领域,早晚会遇上地图可视化的需求,一个高大上的地图可视化,瞬间拔高整个报告的层次. Excel催化剂有幸接触并将地图可视化完全落地于Excel中完成.相对主流Python.R.PowerB ...

最新文章

  1. jstatd - Virtual Machine jstat Daemon
  2. struts2 action间跳转传值
  3. JSP中实现网页访问统计的方法
  4. 【译】Easily Build Android APKs on Device in Termux
  5. 测试用例设计方法 - 场景分析法
  6. 命名规范、MVC 开发模式
  7. Android Studio添加aar依赖
  8. 解决磁盘IO紧张的一种方法
  9. python爬虫设置代理ip_python爬虫使用代理ip或请求头的问题
  10. 容器云平台使用体验:阿里云容器服务
  11. EllSeg训练实验记录代码解析技巧tips
  12. 如何区分网线是几类的_如何判断网线是几类线?
  13. Python刷题系列(8)_Pandas_Dataframe
  14. itk读取.img格式的医学图像
  15. 兵临城下 (深度搜索)
  16. Java笔记 - 网络编程
  17. 教你如何面试进入阿里巴巴!
  18. 在Ubuntu-server下安装i3wm并简单配置
  19. 互联网从此没有 BAT,该来的还是来了!
  20. 《Linux性能优化实战》笔记(十三)—— 如何“快准狠”找到系统内存的问题

热门文章

  1. Echarts图表之雷达图(一)
  2. DirectX11 With Windows SDK--15 几何着色器初探
  3. JS [Web浏览器] “Uncaught RangeError: Maximum call stack size exceeded“ (32)
  4. H5 -- 微信h5页面中下载第三方app的方法
  5. 同桌之间那些或暧昧或有趣的事
  6. 相信积累的力量——《把时间当作朋友》读后感
  7. 我协会负责人调研东风汽车·····
  8. 保研面试/考研复试:英语口语面试必备话题及常用句型句式整理(四)
  9. 安卓微信 清除微信浏览器内置缓存
  10. MySql学习【一】mysql的安装,操作数据库/表/查询表中数据/mysql日期计算