• 基础介绍

    matplotlib图形对象层级结构:

    图形对象(figure) → 子图对象(axes) → 坐标轴对象(axis) → 定位器对象-刻度线(locator)/格式化器对象-刻度线标签(formatter)

  • 绘图对象创建

    from matplotlib import pyplot as plt
    
    # 创建绘图对象
    fig = plt.figure() # 创建网格子图
    ax1 = fig.add_subplot(rows, cols, idx)
    # 创建手动子图
    ax1 = fig.add_axes([left, bottom, width, height]) # 获取坐标轴对象
    ax1.xaxis
    ax1.yaxis # 设置定位器对象
    ax1.xaxis.set_major_locator(plt.NullLocator)
    ax1.xaxis.set_minor_locator(plt.NullLocator)
    # 设置格式化器对象
    ax1.xaxis.set_major_formatter(plt.NullFormatter)
    ax1.xaxis.set_minor_formatter(plt.NullFormatter)
  • 部分细节控制

    • 颜色支持

      ①. 标准颜色名称, 如: "red"

      ②. 范围在0~1的灰度值, 如: "0.75"

      ③. RGB十六进制, 如: "#FFDD44"

      ④. RGB元组, 范围在0~1, 如: (1.0, 0.2, 0.3)

    • 配色方案支持

      ①. 获取配色方案: plt.cm

      ②. 常见配色方案: "jet", "viridis", "RdBu"

      ③. 离散化配色方案: plt.cm.get_cmap("Blues", 6)

    • 颜色条控制支持

      plt.colorbar(mappable, ticks=range(6), label="digit value", extend="both")

      注意, colorbar本身也是一个子图对象, 创建时依赖于mappable对象

    • linestyle线条风格支持

      ①. "solid"; ②. "dashed"; ③. "dashdot"; ④. "dotted"

    • 散点控制支持

      ①. markersize; ②. markerfacecolor; ③. markeredgecolor; ④. markeredgewidth

      注意, 绘制散点时, plt.plot较plt.scatter性能更好, plt.scatter较plt.plot更加灵活

    • 标签支持

      ①. title; ②. xlabel; ③. ylabel; ④. label; ⑤. legend

    • 图例控制支持

      ax1.legend([labels,] loc="upper left", frameon=False, ncol=2, fontsize=10, title="Area")

    • 文本注释支持

      ax1.text(x, y, text, size, color, ha, va, transform=ax1.transData|ax1.transAxes|fig.transFigure)

    • 坐标轴控制支持

      ax1.set(xlabel, xlim, xticks, xscale)

  • 部分绘图实例

    • 误差绘制

      code
      import numpy
      from matplotlib import pyplot as plt X = numpy.linspace(-1, 1, 30)
      Y = X ** 3 + X ** 2 + X
      YErr = numpy.random.uniform(0.3, 0.7, Y.shape) fig = plt.figure(figsize=(4, 4))
      ax1 = fig.add_subplot(2, 1, 1)
      ax2 = fig.add_subplot(2, 1, 2) ax1.errorbar(X, Y, YErr, fmt="o", color="black", ecolor="lightgray", elinewidth=3, capsize=0)
      ax2.plot(X, Y, "-", color="gray")
      ax2.fill_between(X, Y-YErr, Y+YErr, color="gray", alpha=0.2) fig.savefig("plot.png", dpi=300)
    • 等高线绘制

      code
      import numpy
      from matplotlib import pyplot as plt X = numpy.linspace(-1, 1, 30)
      Y = numpy.linspace(-2, 2, 50)
      X, Y = numpy.meshgrid(X, Y)
      Z = numpy.sin(X) + numpy.cos(Y ** 2) fig = plt.figure(figsize=(10, 3))
      ax1 = fig.add_axes([0.1, 0.1, 0.3, 0.9])
      ax2 = fig.add_axes([0.5, 0.1, 0.3, 0.9]) ax1.contourf(X, Y, Z, 20, cmap="RdGy")
      ax2.imshow(Z, extent=[-1, 1, -2, 2], origin="lower", cmap="RdGy", aspect="auto") fig.savefig("plot.png", dpi=300)
    • 3维曲面绘制

      code
      import numpy
      from matplotlib import pyplot as plt
      from mpl_toolkits import mplot3d X = numpy.linspace(-1, 1, 30)
      Y = numpy.linspace(-2, 2, 50)
      X, Y = numpy.meshgrid(X, Y)
      Z = numpy.sin(X) + numpy.cos(Y ** 2) fig = plt.figure(figsize=(10, 3))
      ax1 = fig.add_subplot(1, 2, 1, projection="3d")
      ax2 = fig.add_subplot(1, 2, 2, projection="3d") ax1.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="viridis", edgecolor="none")
      ax2.plot_trisurf(X.flatten(), Y.flatten(), Z.flatten(), cmap="viridis", edgecolor="none") fig.tight_layout()
      fig.savefig("plot.png", dpi=300)
    • 直方图与密度图

      code
      import numpy
      import seaborn as sns
      from matplotlib import pyplot as plt X = numpy.random.normal(0, 1, (10000,)) fig = plt.figure(figsize=(10, 3))
      ax1 = fig.add_subplot(1, 2, 1)
      ax2 = fig.add_subplot(1, 2, 2) sns.histplot(X, kde=False, ax=ax1)
      sns.kdeplot(data=X, ax=ax2) fig.savefig("plot.png", dpi=300)
    • 多维矩阵图

      code
      import numpy
      import pandas
      import seaborn as sns X1 = numpy.random.normal(0, 1, (300,))
      X2 = numpy.sin(X1)
      X3 = X1 ** 2
      data = numpy.vstack((X1, X2, X3)).T
      df = pandas.DataFrame(data, columns=["X1", "X2", "X3"]) sns_plot = sns.pairplot(df) sns_plot.savefig("plot.png", dpi=300)
  • 参考文档

    ①. Python Data Science Handbook by Jake VanderPlas (O’Reilly). Copyright 2017 Jake VanderPlas, 978-1-491-91205-8

Python矩阵作图库matplotlib的初级使用(2)的更多相关文章

  1. matplotlib python高级绘图库 一周总结

    matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...

  2. Python 绘图库Matplotlib入门教程

    0 简单介绍 Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像. 1 安装 pip install matplotlib 2 入门代码 ...

  3. 推荐:python科学计算pandas/python画图库matplotlib【转】

    机器学习基础3--python科学计算pandas(上) 地址:https://wangyeming.github.io/2018/09/04/marchine-learning-base-panda ...

  4. Python数据可视化——使用Matplotlib创建散点图

    Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...

  5. python实战学习之matplotlib绘图

    matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...

  6. 【python笔记】使用matplotlib,pylab进行python绘图

    一提到python绘图,matplotlib是不得不提的python最著名的绘图库,它里面包含了类似matlab的一整套绘图的API.因此,作为想要学习python绘图的童鞋们就得在自己的python ...

  7. python数据分析scipy和matplotlib(三)

    Scipy 在numpy基础上增加了众多的数学.科学及工程常用的库函数: 线性代数.常微分方程求解.信号处理.图像处理.稀疏矩阵等: Matplotlib 用于创建出版质量图表的绘图工具库: 目的是为 ...

  8. Python中Numpy及Matplotlib使用

    Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...

  9. 在python中使用图形库matplotlib

    matplotlib is a python 2D plotting library which produces publication quality figures in a variety o ...

  10. [置顶] 如何在Windows 7 64位安装Python,并使用Matplotlib绘图

    1.     安装Python 我使用的是Windows 7 64 bit,所以我从Python官网下载python-2.7.5.amd64.msi,安装步骤如下: 1)        安装windo ...

随机推荐

  1. 微信小程序分包

    当我们程序太大的时候,打开小程序就会比较慢,此处就需要用到分包加载,按照模块划分不同的包,让用户在需要的时候才加载对用的模块,也就是用户在进入某些页面的时候才下载该页面的资源,提高小程序的打开速度,以 ...

  2. 基础雷达图(radar)

    基础雷达图 代码 var chartDom=document.getElementById("radar"); var myChart=echarts.init(chartDom) ...

  3. windows定时任务执行python爬虫

    有一些定时爬取的操作,适合用定时任务去执行.个人单独用的项目不适合放在工作所用的服务器上,也没必要单独买个服务器,我们windows电脑本身就有这项功能.接下来是一个windows定时任务执行pyth ...

  4. The size of the request headers is too long.

    当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of ...

  5. Revit如何给模型绑定动画的教程

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链. Revit模型完成后,为了展示成果,有时需要做动画,本文章将教大家如何在3dsmax中给塔吊族模型绑定旋转动画,并导入到Lumion当中使用. ...

  6. linux 信号 未决信号集和屏蔽信号集

    有的地方,将屏蔽又叫阻塞? 在虚拟地址空间中,内核区的PCB中 有两个64位的值(集合),分别表示64个信号的未决状态(未被处理)和屏蔽与否 kill -l 可以查看linux中的所有信号,共64个 ...

  7. 【PyQt5学习-03-】PyQt5 控件概念

    快速开发:先看控件的功能,再根据需要选学 1.什么是控件 程序界面上的元素 各自独立 一块矩形区域 具有的功能 接收用户输入 用户点击 显示内容 放置其他控件 先学常用控件 基础控件 按钮 输入控件 ...

  8. 【9】java之static关键字

    一. static 定义属性 static 定义的属性和非 static 定义的属性有一个最大区别:所有的非 static 属性必须产生实例化对象之后才可以访问,static 定义的属性不受此限制.也 ...

  9. python cls方法_关于类方法中的cls

    title: python cls方法_关于类方法中的cls author: 杨晓东 permalink: python cls方法_关于类方法中的cls date: 2021-10-02 11:27 ...

  10. cannot import name 'detail_route' from 'rest_framework.decorators'的解决办法

    原因 es7不能使用3.1.1版本的django-haystack 解决办法 如果你是在弄elasticsearch,那么这个适合你,否则应该用不了. 终端执行django-haystack的更新 p ...