Matplotlib.pyplot 常用方法

  1、介绍

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,

  直方图,功率谱,条形图,错误图,散点图等。

  2、Matplotlib基础知识

    2.1、Matplotlib中的基本图表包括的元素

    x轴和y轴

    水平和垂直的轴线

    x轴和y轴刻度

    刻度标示坐标轴的分隔,包括最小刻度和最大刻度

    x轴和y轴刻度标签

    表示特定坐标轴的值

    绘图区域

    实际绘图的区域

   

   2.2、hold属性

    hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。

    但是目前不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。

   2.3、网格线

    grid方法

    使用grid方法为图添加网格线

    设置grid参数(参数与plot函数相同)

    .lw代表linewidth,线的粗细

    .alpha表示线的明暗程度

   2.4、axis方法

    如果axis方法没有任何参数,则返回当前坐标轴的上下限

   2.5、xlim方法和ylim方法

    除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围

  3、配置属性

    Matplotlib.plt是面向对象的绘图库,可以为每个对象配置它们的属性,有三个方法:

  •  对象的set_属性名()
  •  对象的set()
  •  pylot模块提供的setp()函数

    如下例子:

    

plt.figure()
line = plt.plot(range(5))[0]                # plot函数返回的是一个列表,因为可以同时画多条线的哦;
line.set_color('r')
line.set_linewidth(2.0)
plt.show()
####################################
plt.figure()
line = plt.plot(range(5))[0]            # plot函数返回的是一个列表,因为可以同时画多条线;
line.set(color = 'g',linewidth = 2.0)
plt.show()
####################################
plt.figure()
lines = plt.plot(range(5),range(5),range(5),range(8,13))    # plot函数返回一个列表;
plt.setp(lines, color = 'g',linewidth = 2.0)                # setp函数可以对多条线进行设置的;
plt.show()

    获取属性:

  •  一个是通过对象的方法get_属性名()函数,
  •  一个是通过pylot模块提供的getp()函数。

     getp()有两个调用方法,一个是只有要的查看的对象一个参数,一个是要查看的对象现属性两个参数;如:

    

# getp(obj, property=None)
plt.getp(line)
plt.getp(line, 'color')

  4、Artist 对象

    matplotlib API包含有三层:

  • backend_bases.FigureCanvas : 图表的绘制领域
  • backend_bases.Renderer : 知道如何在FigureCanvas上如何绘图
  • artist.Artist : 知道如何使用Renderer在FigureCanvas上绘图

    FigureCanvas和Renderer需要处理底层的绘图操作,例如使用wxPython在界面上绘图,或者使用PostScript绘制PDF。Artist则处理所有的高层结构,例如处理图表、

  文字和曲线等的绘制和布局。通常我们只和Artist打交道,而不需要关心底层的绘制细节。

    Artists分为简单类型和容器类型两种。简单类型的Artists为标准的绘图元件,例如Line2D、 Rectangle、 Text、AxesImage 等等。而容器类型则可以包含许多简单类型的Artists,

  使它们组织成一个整体,例如Axis、 Axes、Figure等。

    直接使用Artists创建图表的标准流程如下:

    创建Figure对象
    用Figure对象创建一个或者多个Axes或者Subplot对象
    调用Axies等对象的方法创建各种简单类型的Artists

   4.1、Artist 对象

    Artist对象共分为简单类型和容器类型两种哦。 
    下面是一个简单Artist对象的创建过程:

import matplotlib.pyplot as plt
import numpy as npfig = plt.figure(1)        # 创建了一个figure对象;# figure对象的add_axes()可以在其中创建一个axes对象,
# add_axes()的参数为一个形如[left, bottom, width, height]的列表,取值范围在0与1之间;
# 我们把它放在了figure图形的上半部分,对应参数分别为:left, bottom, width, height;
ax = fig.add_axes([0.1, 0.5, 0.8, 0.5])
ax.set_xlabel('x')           # 用axes对象的set_xlabel函数来设置它的xlabel
ax.set_ylabel('y')
line =ax.plot(range(5))[0]      # 用axes对象的plot()进行绘图,它返回一个Line2D的对象;
line.set_color('g')             # 再调用Line2D的对象的set_color函数设置color的属性;
plt.show()

    输出图形:

    

  5、figure 容器

    在构成图表的各种Artist对象中,最上层的Artist对象是Figure。我们可以调用add_subplot()与add_axes()方法向图表中添加子图,它们分加到figure的axes的属性列表中。

  add_subplot()与add_axes()返回新创建的axes对象,分别为axesSuubplot与axes, axesSuubplot为 axes的派生类。另外,可以通过delaxes()方法来删除哦;

    figure对象可以有自己的简单的artist对象。

    下面列出Figure对象中包含的其他Artist对象的属性:

    axes:Axes对象列表;
    patch:作为背景的Rectangle对象;
    images:FigureImage对象列表,用于显示图像;
    legends:Legend 对象列表,用于显示图示;
    lines:Line2D对象列表;
    patches:Patch对象列表;
    texts:Text 对象列表,用于显示文字;

  

  6、axes 容器

    它是整个matplotlib的核心,它包含了组成图表的众多的artist对象。并且有很多方法。我们常用的Line2D啦,Xaxis,YAxis等都是它的属性哦;可以通过这个对象的属性来设置坐标轴的label,

  范围啦等之类的。干脆直接用plt.getp()查看它的属性,然后通过set_属性名()函数来设置就好啦。

  7、axis 容器

    axis容器包括了坐标轴上的刻度线、刻度标签等、坐标网络等内容。

    坐标轴上的每个刻度包括刻度线(ticklines)、刻度标签(ticklabels)、刻度位置(ticklocs)。

    例子:

  

import numpy as np
import matplotlib.pyplot as plt# 通过axis来更改坐标轴
plt.plot([1,2,3],[4,5,6])
# gca()获取当前的axes绘图区域,调用gcf()来获得当前的figure
axis = plt.gca().xaxis
axis.get_ticklocs()                 # 得到刻度位置;
axis.get_ticklabels()               # 得到刻度标签;
axis.get_ticklines()                # 得到刻度线;
axis.get_ticklines(minor = True)    # 得到次刻度线; 举个例子:就像我们的尺子上的厘米的为主刻度线,毫米的为次刻度线;
for label in axis.get_ticklabels():label.set_color('blue')          # 设置每个刻度标签的颜色;label.set_rotation(90)          # 旋转45度;label.set_fontsize(16)          # 设置字体大小;
for line in axis.get_ticklines():line.set_color('green')line.set_markersize(3)         # 设置刻度线的长短;line.set_markeredgewidth(2)     # 设置线的粗细
plt.show()

    运行结果:

    

    pyplot函数提供了两个绘制文字的函数:text()和figtext()。它们分别调用了当前的Axes对象与当前的Figure对象的text()方法进行绘制文字。

  text()默认在数字坐标系(就是axes在的坐标系,用坐标轴的数字来表示坐标)中画, figtext()默认在图表坐标系(就是figure在图表中,坐标范围从0 到 1 )中画,

    简单的调用:

    plt.text(1, 1, ‘hello,world’, color = ‘bule’) #还可以写更多参数的;
    plt.figtexe(0.1, 0.8 ,”i am in figure’, color = ‘green’)

  8、常用函数

    plot()

    可以画出很简单线图,基本用法:

    lot(x, y) # 画出横轴为x与纵轴为y的图,使用默认的线形与颜色;

    plot(x, y, 'bo') # 用蓝色,且点的标记用小圆,下面会解释哦

    plot(y) # 纵轴用y ,横轴用y的每个元素的坐标,即0,1,2……

    plot(y, 'r+') # 如果其中x或y 为2D的,则会用它的相应的每列来表示(注意是每列)

    plot(x1, y1, 'g^', x2, y2, 'g-') #可以使用多对的x, y, format 对当作变量的,把它们画一个图里;

    对于参数中,常用的format:线的颜色、线的形状、点的标记形状,我们用这三个的时候经常用缩写,它们之间的顺序怎么都可以,

    如它俩一个意思:’r+–’、’+–r’。如果我们不想缩写的话,可以分别写成如: color=’green’, linestyle=’dashed’, marker=’o’。

    线的形状:
    ‘-’ solid line style 
    ‘–’ dashed line style 
    ‘-.’ dash-dot line style 
    ‘:’ dotted line style

    点的标记:

    ‘.’ point marker

    ‘,’ pixel marker

    ‘o’ circle marker

    ‘v’ triangle_down marker

    ‘^’ triangle_up marker

    ‘<’ triangle_left marker

    ‘>’ triangle_right marker

    ‘1’ tri_down marker

    ‘2’ tri_up marker

    ‘3’ tri_left marker

    ‘4’ tri_right marker

    ‘s’ square marker

    ‘p’ pentagon marker

    ‘*’ star marker

    ‘h’ hexagon1 marker

    ‘H’ hexagon2 marker

    ‘+’ plus marker

    ‘x’ x marker

    ‘D’ diamond marker

    ‘d’ thin_diamond marker

    ‘|’ vline marker

    ‘_’ hline marker

    线的颜色:

    ‘b’ blue 
    ‘g’ green 
    ‘r’ red 
    ‘c’ cyan 
    ‘m’ magenta 
    ‘y’ yellow 
    ‘k’ black 
    ‘w’ white

    常见线的属性有:color,labor,linewidth,linestyle,maker,等,参考:lines–matplotlib。

    显示正弦曲线

    

import numpy as np
import matplotlib.pyplot as pltplt.figure('正弦曲线')                   # 调用figure函数创建figure(1)对象,可以省略,这样那plot时,它就自动建一个啦;t = np.arange(0.0, 4.0, 0.1)
s = np.sin(np.pi*t)
plt.plot(t, s, 'g--o', label = 'sinx')plt.legend()                    # 显示右上角的那个label,即上面的label = 'sinx'
plt.xlabel('time (s)')          # 设置x轴的label,pyplot模块提供了很直接的方法,内部也是调用的上面当然讲述的面向对象的方式来设置;
plt.ylabel('voltage (mV)')      # 设置y轴的label;
#plt.xlim(-1,3)                 # 可以自己设置x轴的坐标的范围哦;
#plt.ylim(-1.5,1.5)
plt.title('About as simple as it gets, folks')
plt.grid(True)                  # 显示网格;plt.show()

  输出图形:

  

    

  subplot()

    利用subplot()函数可以返回一个axes的对象,函数为:subplot(numRows, numCols, plotnum),当这三个参数都小于10时,可以把它们写一起,如下所示:

# 填充彩色子图
import matplotlib.pyplot as plt
import numpy as npfor i, color in enumerate('rgbyck'):plt.subplot(321+i, facecolor = color)
plt.show()

    输出图形:

    

    利用subplot_adjust()函数可以对画的多个子图进行调整,优化间隔,它一共有left、right, bottom, top, wspace, hspase 六个参数,取 值从0至1。

  

# 填充彩色子图
import matplotlib.pyplot as plt
import numpy as np
x1 = np.linspace(0.0, 5.0)   #生成一个一维的array,linspace(起始点,结束点,点数(默认为50))
x2 = np.linspace(0.0, 2.0)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)plt.subplot(2, 2, 1)      #表示在subplot为2*1的样式,并在第一个子图上画出;
plt.plot(x1, y1, 'yo-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')plt.subplot(2, 2, 2)      #  我们在第二个子图上加个空图哈,去理解它的图的排序(即注意第二个子图的位置#  为第一行第二列)是按行优先的,这个正好和matlab里相反哦;
plt.title('It is a empty figure')plt.subplot(2, 2, 4)
plt.plot(x2, y2, 'g.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')plt.show()

    输出图形:

    

  

  subplots()

    plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, **fig_kw)

    作用:创建一个已有subplots的figures; 
    参数:

      nrows : int ,指创建的sublots的行数,默认为1.

      ncols : int ,指创建的sublots的列数,默认为1.

      sharex : 为一个string或bool类型; 当为Ture时,所有的subpots将要共享x轴,如果它们是上下的关系的话,上面的图的刻度label就没有,只有下面那个图的.

If a string must be one of "row", "col", "all", or "none"."all" has the same effect as *True*, "none" has the same effectas *False*.If "row", each subplot row will share a X axis.If "col", each subplot column will share a X axis and the x ticklabels on all but the last row will have visible set to *False*.*sharey* : 同上*squeeze* : bool  它是用来控制返回值的,根据返回的axis的结果决定要不要把没有的维度进行压缩一下.当为Ture时,如果返回的axis只有一个,则表示成标量,如果有一行或一列,则表示为一维数组,如果多行多列,则表示为2D数组;当为False时,不管多少个返回的axis,都以二维数组的方式返回;*subplot_kw* : dictDict with keywords passed to the:meth:`~matplotlib.figure.Figure.add_subplot` call used tocreate each subplots.*fig_kw* : dictDict with keywords passed to the :func:`figure` call.  Note that allkeywords not recognized above will be automatically included here.

  

    返回值

    有两个fig和 axt(它是元组的方式)

    *fig* is the :class:matplotlib.figure.Figure object

    *ax * can be either a single axis object or an array of axis objects if more than one subplot was created. The dimensions of the resulting array can be controlled with the squeeze keyword, see above.

# subplots() 返回值
import matplotlib.pyplot as plt
import numpy as np  x = range(0,30,1)
y = np.sin(x)# 接收返回的两个对象
f,(ax1, ax2) = plt.subplots(1, 2, sharey=True)
# 两个对象分别画图
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
plt.show()

   输出图形:

    

    

   twinx()或twiny()

    twinx():在同一图画中,共享x轴,但是拥有各自不同的y轴

    twiny():和上面一样,不同之处在于,它共享y轴。

# twinx() 共享x轴实例
import matplotlib.pyplot as plt
import numpy as npfig = plt.figure(1)
ax1 =plt.subplot(111)ax2 = ax1.twinx()ax1.plot(np.arange(1,5),'g--')
ax1.set_ylabel('ax1',color = 'r')
ax2.plot(np.arange(7,10),'b-')
ax2.set_ylabel('ax2',color = 'b')plt.show()

    输出图形:

    

    

  参考文章:
  matplotlib.pyplot 官方文档
  博客园——matplotlib 常用知识
  博客园——matplotlib 绘图入门
  matplotlib-绘制精美的图表(Figure容器,Artist对象,Axes容器)
  博客园——Matplotlib 详解图像各个部分
  
  Matplotlib.pyplot 常用方法(一)

Matplotlib.pyplot 常用方法相关推荐

  1. Matplotlib.pyplot 常用方法(一)

    简介 matplotlib是python上的一个2D绘图库,它可以在夸平台上边出很多高质量的图像.综旨就是让简单的事变得更简单,让复杂的事变得可能.我们可以用matplotlib生成 绘图.直方图.功 ...

  2. cv2 和 matplotlib.pyplot 和 PIL.Image 读取图片方式对比【Python读取图片】

    文章目录 import matplotlib.pyplot as plt 和 cv2 读取图像对比 PIL 和 cv2 读取图片对比 mxnet.image.imread 读取图片 PIL 和 tor ...

  3. matplotlib 散点图和折线图画在一起_使用matplotlib.pyplot画折线图

    import matplotlib.pyplot as plt x_data=[1,2,3,4,5]#假定的X轴数据 y1_data=[x**2 for x in x_data]#假定Y轴数据是X轴数 ...

  4. matplotlib.pyplot中add_subplot方法参数的含义

    有代码如下: import matplotlib.pyplot as plt from numpy import *x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 20] ...

  5. matplotlib.pyplot.scatter API

    https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html?highlight=scatter#matplotlib.pyplo ...

  6. matplotlib.pyplot.plot 用法详解

    python matplotlib演示官网 https://matplotlib.org/xkcd/users/pyplot_tutorial.html https://matplotlib.org/ ...

  7. python2.7环境下“No module named matplotlib.pyplot”的解决办法

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 一.问题 二.根本原因 三.解决办法 一.问题 // An highlighted block import ma ...

  8. python【Matlibplot绘图库】画多个曲线的折线图(Matplotlib.pyplot.plot)

    文章目录 1.代码 2.输出 3.方法解释  这里我利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: 1.代码 # -*- coding: UTF ...

  9. python中matplotlib.pyplot的使用示例

    matplotlib.pyplot主要用于绘图,其使用方法和matlab中的相关绘图函数很像,事实上他也是仿matlab的相关绘图函数的. 使用的时候要有的意识是:先在画布中绘制好图,再用plt.sh ...

最新文章

  1. aws lambda使用_使用AWS Lambda安排Slack消息
  2. 静态链接库编写与使用(VC6)
  3. oschina导出博客获取图片
  4. Java7 ConcurrentHashMap源码浅析
  5. ROS坐标系统,常见的坐标系和其含义
  6. 游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件
  7. 1加6投屏_6月的早餐,1杯牛奶加燕麦,营养健康又美味,饱腹感很强
  8. 语法》第一章 基本语法
  9. IE10 CSS hack
  10. 即时通讯 音视频 开发技术
  11. QQ分享功能实现-Android
  12. mysql启动报sock_mysql启动错误:mysql.sock丢失
  13. 往届毕业生档案去向查询网_往届毕业生档案在哪里可以查吗
  14. 国内镜像加速器registry的制作
  15. Excel高级图表制作①——电池图/KPI完成情况对比图/重合柱形图
  16. 池州学院数学与计算机足球队,池州学院数学与计算机科学系.ppt
  17. SQL Server Transact-SQL编程/存储过程/触发器
  18. Linux搭建Ngrok服务器详细过程
  19. LLVM 与 Clang 介绍
  20. 内网渗透(九)之内网信息收集-手动本地信息收集

热门文章

  1. 基于matlab模拟心电信号,附赠代码
  2. Android 停车地图及停车导航,停车场蓝牙定位导航方案
  3. 破解滑块(极验)验证码思路分享
  4. 计算机java相关英文文献,计算机 java 外文文献 外文翻译 英文文献.doc
  5. php网页视频播放插件下载_视频播放插件Video.js
  6. uniapp项目运行到小米平板调试
  7. 3Dmax+Substance Painter(SP)+.glb+threejs 次时代效果
  8. 给老孙做了个排班表!
  9. 图片表情制作,QQ斗图生成,搜狗图片搜索,自适应支持手机浏览
  10. 第十五章 文正学院成绩录入系统