目录

Matplotlib介绍

线形图(折线图)

直方图

条形图

饼状图

散点图


Matplotlib介绍

       matplotlib是一个Python 的2D绘图库,提供了一套表示和操作图以及图内部对象的函数,借助它可以绘制多种多样的数据图,如线形图饼状图等。

Matplotlib中提供了两种绘图接口:

  • 基于MATLAB:自动创建和管理图和坐标系,用 pyplot 中函数作图;

  • 基于面向对象:显示创建图和坐标系,再调用对象的方法来作图。

本文介绍的绘图都是基于MATLAB的绘图接口

Pyplot 是一个有命令风格的函数集合,和MATLAB很相似,通过调用函数不断完善绘图,最开始时图中什么都没有,需要什么就调用对应函数进行添加。pyplot 子库中的figure()用来创建图subplot()用来创建子图。所有的操作都是在子图上进行,pyplot 表示当前子图,若没有就创建一个子图,实际应用中经常直接用pyplot调用相关函数。

Python标准库中默认不包含 matplotlib,需要自己下载安装:

  • 命令行安装 pipinstall matplotlib (安装过程中会涉及到相关依赖包的安装,稍微有点慢)

  • 借助于第三方软件,例如通过Anaconda进行软件的安装和包管理。

Matplotlib中的所有对象都称为Artist,大致可分为两类:

  • 容器类:坐标系坐标轴刻度;(图中可包含若干个坐标系,坐标系中又包含多个坐标轴,坐标轴上包含多个刻度)

  • 基础类:线文本图例网格标题

Matplotlib中图的构成如图所示,(该图来源于官网),主要包括:(figure)、坐标系(axes)、坐标轴(axis)、主刻度(Major tick)、分刻度(Minor tick)、主刻度标签(Major tick label)、分刻度标签( Minor tick label)、Y 轴标签(Y axis label)、X 轴标签(X axis label)、线(line)、(marker)、图例(legend)、网格(grid)、标题(title)等。

注意:并不是所有图中都包含这些内容,图中默认什么都没有,需要什么调用相应的方法即可将其添加进去。Pyplot中常见的方法如下:

pyplot.figure()

  • num整数或字符串,可选的,如果没有传值,则采用自增值,可通过number属性访问;如果传递整数,则会检查是否存在对应的图,存在则直接返回,否则创建新的图;如果传的是字符串,则设置为窗口的标题;

  • figsize浮点型元组,可选。图的宽、高值,单位为英寸,默认为[6.4, 4.8]

  • dpi整数,可选。分辨率 ,默认为100

  • facecolor背景颜色,默认为白色

  • edgecolor边框颜色,默认为白色,默认看不出效果,需要将linewidth设置为一个比较大的值才能观察到;

  • frameon:是否绘制边框和背景,默认为True

  • FigureClass: 图对应的类;

  • clear: 是否清空画布,默认为False,设置为True,且图已存在时,会清空已有内容;

  • kwargs:其他关键字参数,例如线条宽度。

可以同时创建和显示多个图(figure)。

pyplot.subplot()

如果想在同一个图中绘制多个坐标系,可调用多次调用subplot()方法,每次在当前图中添加一个子块,返回一个坐标系对象。方法定义如下:

  • args可变参数,可传递3个整数,如①所示,分别表示行数列数以及当前的位置;也可传递一个3位整数,如②所示,第1位表示行数、第2位表示列数、第3位表示当前位置,此时要求所有数字都小于10。此时将当前图划分为 nrows * ncols 网格,子块的位置左上角为1从左到右,从上到下不断增大。如果多次调用subplot() 时,会在对应位置添加新内容,如果已有内容则覆盖。每次画图前需要指定位置,默认会执行subplot(1,1,1)
  • kwargs:其他关键字参数,例如可以通过projection指定坐标系类型、通过polar指定是否为极坐标、通过sharexsharey指定共享x轴或y轴坐标等。例如下面代码将整个图划分为2行2列4个区域。

线形图(折线图)

线形图主要是通过线条将序列中相邻的两个点进行连接而成,使用非常广泛,通过plot()函数绘制,可以指定线条的样式点的标记以及颜色等。使用plot()方法绘制点或线等,需指定所有点的坐标,可同时绘制多条线。调用方式有如下两种:

  • plot([x]y[fmt], *, data=None, **kwargs)

  • plot([x]y[fmt][x2]y2[fmt2], ..., **kwargs)

主要参数及其含义如下:

  • xx轴坐标,可选,当没有传值时,采用默认值,值的个数与y轴坐标个数相同,从0开始不断增大

  • yy轴坐标,不可省略,通常是一个数或一维数组;

  • data: 通常为可检索的对象,例如字典DataFrame等;

  • fmt:定义基本样式,由[颜色][点的标记][线条样式]三部分字符组成,也可通过关键字参数设置

  • kwargs关键字参数,例如:color(颜色)、marker(标记)、linestyle(线条样式)、linewidth(线条宽度)、markersize(标记大小)、label(标签,用于图例)等。

如果通过color关键字参数单独设置颜色,可使用颜色单词全称(如“green”)以及十六进制字符串(如“#aabbcc”)。

注意三种字符顺序可打乱,也可省略部分,没指定线条样式时,将不显示线条,没指定标记则不显示点

线形图案例

参考代码:

注意:pyplot 默认不支持中文显示,两种解决方案:

  • 使用 rcParams['font.family']属性修改字体,此时,整个图中的字体都会改变;

  • 在需要显示中文的地方,增加一个属性:fontproperties,此时只修饰部分地方,其他地方的字体不会跟随改变;

rcParams中关键的属性及其默认值如下:

采用中文字体时,部分字体下,负号不能正常显示,需设置 axes.unicode_minus为 False

绘制正弦曲线、余弦曲线

思路:首先需要一系列的X轴坐标,可通过numpy中的arange()函数生成,例如从0 到 4,步长为0.02;然后借助 numpy 中的正弦、余弦函数对每个x坐标分别求值;最后根据x坐标和对应的y坐标画图

运行效果图如下:

参考代码如下:

直方图

直方图是用一系列等宽不等高的长方形来表示数据,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,矩形的高度跟落在间隔内的数据数量成正比,变化的高度形态反映了数据的分布情况

直方图的一些效果举例:

pyplot 中使用hist() 绘制直方图,并以元组形式返回直方图的计算结果,包括各区间中元素的数量,区间的取值范围,以及具体每个区间对象。

hist (x,bins=None, range=None, density=False,weights=None, cumulative=False, bottom=None,histtype='bar', align='mid', orientation='vertical',**kwargs)

一些关键参数说明:

  • x数组或者数组序列不要求每个数组长度相同),用于存放数据;

  • bins: 整数、序列或字符串,整数表示等宽区间的个数,自动计算区间范围,序列则表示区间的范围,除了最后一个以外,都是包含左边不包含右边,字符串则表示对应的策略,默认为hist.bins;

  • range:元组,指定最小值和最大值,默认为数据中的最小值和最大值,如果bins是一个序列,则range没什么影响;

  • density:布尔值,可选,如果为True,则返回的是归一化的概率密度,所有区间的概率之和为1

  • weight:类似于数组的值,可选,形状和 x 相同,表示每个值对应的权重,默认情况下所有数据的权重相同;

  • cumulative布尔值或-1,累积求和,表示小于某个数的所有元素个数之和,随着数的增大而不断增大,如果为-1,则反转方向,表示大于某个数的所有元素个数之和,随着数量增大而不断减小;

  • histtype :直方图类型,'bar'(多个并列摆放), 'barstacked'(多个堆叠摆放), 'step'(生成对应的折线),  'stepfilled'(填充相关区域);

  • orientation: 直方图的方向,默认为垂直。

直方图案例

思路:随机生成1000个以10为中心的正态分布的数,和1000个以12为中心的正态分布的数,然后将结果取值范围划分为30个等距离的区间,然后统计各个区间上数出现的个数,最终绘制出直方图。如图所示。

参考代码如下:

条形图

条形图跟直方图类似,只不过 x 轴表示的不是数值而是类别。直方图的各矩形通常是连续排列,而条形图则是分开排列。使用 pyplot 的 bar()函数绘制的条形图。

bar(x, height, width=0.8, bottom=None, *, align='center', data=None,**kwargs)

  • xx 轴的位置序列,即条形的起始位置

  • heighty轴的数值序列,即条形图的高度,需展示的数据;

  • width:每个矩形的宽度,可选,默认为0.8

  • bottom y轴坐标的基线,默认为0;

  • align对齐方式,可选,center和edge两种,默认为'center'

  • color条形图的填充颜色

  • edgecolor条形图边框的颜色;

  • orientation方向,vertical(垂直)、 horizontal(水平)

如果需要在一个图上显示多种条形图,可调整位置和宽度让多个条形图并列摆放,也可以堆叠摆放

条形图案例

饼状图

饼状图显示一个数据系列中各项的大小与各项总和的比例。Pyplot中绘制饼状图的函数为 pie(),主要参数如下:

  • x饼图中每一块的比例,通常是一个数组如果 sum(x) > 1 会使用归一化后的比例,即每一块除以sum(x),如果sum(x) < 1,则按照实际比例,此时有一部分为空白

  • explode指定饼图中每块离开中心的距离,通常是一个数组,默认为0

  • labels为饼图添加标签说明,类似于图例说明,标签列表

  • colors指定饼图的填充色,颜色列表

  • autopct设置饼图内每块百分比显示样式,可以使用format字符串或者格式化函数'% width. Precision f %%'指定饼图内百分比的数字显示宽度和小数的位数

  • radius设置饼图的半径

  • labeldistance每块旁边的文本标签的位置离饼的中心点的距离;

  • shadow是否有阴影效果,默认为False。

案例:已知一个员工一天的活动时间分配为:工作8小时、睡觉7小时、吃饭3小时,玩乐6小时,根据这些信息,绘制该员工一天时间分配饼状图,效果如下。

参考代码如下:

散点图

散点图是以一个变量为横坐标另一变量为纵坐标,利用散点的分布形态反映变量统计关系的一种图形,以不同颜色、不同大小的点表示数据之间的关系。Pyplot 中绘制散点图的函数为scatter(),主要参数如下:

scatter(xys=None, c=None,marker=None, cmap=None,norm=None, vmin=None,vmax=None, alpha=None,**kwargs)

  • x散点图中点的x轴坐标

  • y散点图中点的y轴坐标

  • s散点图点的大小,默认为20,标量或数组;

  • c散点图点的颜色,默认为蓝色,标量或数组;

  • marker指定散点图点的形状,默认为圆形;

  • cmap颜色映射,可选,将颜色映射到已有色系,例如plt.cm.Blues

  • norm将亮度数据归一化到 0-1 之间

  • vmin亮度的最小值

  • vmax亮度的最大值

  • alpha设置散点的透明度

编程程序,绘制散点图,要求图中的每个散点随机呈现不同的大小和颜色。效果如图所示,随机生成30个点,x轴坐标和y轴坐标都在0-10之间,颜色取值在0-30之间。大小在30-300之间。效果图如下:

代码参考如下:

更多关于手把手教你学Python的文章请关注微信公众号:Python资源分享。详细的视频讲解可查看 CSDN学院 里的手把手教你学Python系列视频:https://edu.csdn.net/lecturer/5686

完整课件下载网址如下:

数据可视化-matplotlib(课件)_python数据可视化课件-Python文档类资源-CSDN下载详细介绍Python中数据可视化第三方库Matplotlib的使用,包括绘图基础以及一些经典图的绘制python数据可视化课件更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/Dream_Gao1989/13624911?spm=1001.2014.3001.5503

手把手教你学Python之Matplotlib绘图(一文掌握数据可视化库-Matplotlib)相关推荐

  1. 手把手教你学Python之Pandas(一文掌握数据分析与处理库-Pandas)

    目录 基本结构之Series Series对象的创建 Index对象介绍 Series中数据的访问 Series中常用方法 基本结构之DataFrame DataFrame的创建 ​DataFrame ...

  2. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制

    # coding:utf-8 import pandas as pd import numpy as np from matplotlib import pylab as plt # 导入数据可视化库 ...

  3. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  4. oracle数据库更新语句_20_手把手教你学Python之操作数据库

    数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等.数据库的主要特点: 以一定的方式组织.存储数据: 能为多个用户共享: 与程序彼此独立. -- 数据 ...

  5. python中字典的value可以为任意对象_手把手教你学Python之字典

    字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...

  6. 手把手教你学Python之波士顿房价预测(scikit-learn的应用)

    目录 1.波士顿房价预测介绍 2.线性回归算法 3.调用scikit-learn库实现房价预测 1.波士顿房价预测介绍 问题描述:波士顿房价数据集统计的是20世纪70年代中期波士顿郊区房价的中位数,统 ...

  7. 手把手教你学Python之常见运算符

    目录 算术运算符 关系运算符 逻辑运算符 位运算符 成员运算符 身份运算符 前面给大家介绍了Python中的一些基本数据类型,这些数据之间如何进行运算呢?这就需要借助于一些运算符了,Python中提供 ...

  8. 手把手教你学Python之文件操作(一文掌握文件操作)

    目录 1.Python中文本文件的读写 2.Python中常用的文件与文件夹操作方法 3.Python中Excel文件的读写 4.Python读取Excel文件案例​ 为了保存数据,方便修改和分享,数 ...

  9. aws python sns_手把手教你用Python抓取AWS的日志(CloudTrail)数据

    原标题:手把手教你用Python抓取AWS的日志(CloudTrail)数据 作者: Gang TAO 大数据时代,利用数据做决策是大数据的核心价值. 本文手把手,教你使用python进行AWS的Cl ...

最新文章

  1. java培训分享:学习java开发的优势是什么
  2. SharePoint 2013: The New Web Application button is disabled is the central administration
  3. 【CV】关注度越来越高的行人重识别,有哪些热点?
  4. 使用Yeoman定制前端脚手架
  5. 利用 Python / R 对数据集进行「长」「宽」转换
  6. [指数型生成函数专练]chocolate,红色病毒问题,排列组合,字串数
  7. JavaScript replace string 替换字符
  8. WebAPI 和 WebService的区别
  9. 遇到代码缺陷不要慌,马上教你快速检测和修复
  10. 设计模式之观察者模式PHP实现
  11. BUAA OO 2019 第一单元作业总结
  12. 5101是多大的电阻_电阻标准阻值换算表
  13. 【解决Windows】修改win10默认开机启动动画
  14. 2019世界互联网大会 聚焦网络安全发展新动能新要求 最新等保测评机构名录发布10月版
  15. 算法分析与设计实验报告——实现汽车加油问题
  16. DBMS_AW_EXP: BIN$XXXXXXX==$0 not AW$
  17. 2019年最新中文TTS算法实现个合成样本
  18. PTA 一维数组 7-3 删除指定数据
  19. Adaptive Clustering-based Malicious TrafficClassification at the Network Edge论文阅读笔记
  20. 虚拟机安装出现directory ezboot not found error loading image:CDMENU.EZB的问题解决方案

热门文章

  1. 源码编译报错系列之:Fatal error compiling: 无效的标记: --release -> [Help 1]
  2. Ganglia_简述
  3. 幂级数展开求积分_72道积分题 略详解析(51-72)
  4. oracle中start with和connect by的用法理解
  5. python小猴子摘桃子的故事_小猴子摘桃子看图写话
  6. ARM关于标志位影响详解
  7. 李铁谈“多规合一”:“合”在思想而非形式
  8. Linux基础(较全)
  9. MQTT——EMQX学习笔记07——topic、topic filter和主题通配符
  10. gtest调试_gtest命令行测试案例