【Matplotlib】详解图像各个部分

转载 2018年04月17日 15:08:25

【Matplotlib】详解图像各个部分

首先一幅Matplotlib的图像组成部分介绍。

在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:

下面以一个直线图来详解图像内部各个组件内容:

其中:title为图像标题,Axis为坐标轴, Label为坐标轴标注,Tick为刻度线,Tick Label为刻度注释。各个对象关系可以梳理成以下内容:

图像中所有对象均来自于Artist的基类。

上面基本介绍清楚了图像中各个部分的基本关系,下面着重讲一下几个部分的详细的设置。

一个"Figure"意味着用户交互的整个窗口。在这个figure中容纳着"subplots"。

当我们调用plot时,matplotlib会调用gca()获取当前的axes绘图区域,而且gca反过来调用gcf()来获得当前的figure。如果figure为空,它会自动调用figure()生成一个figure, 严格的讲,是生成subplots(111)

Figures

Subplots

plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()

注意:其中各个参数也可以用逗号,分隔开。第一个参数代表子图的行数;第二个参数代表该行图像的列数; 第三个参数代表每行的第几个图像。

另外:fig, ax = plt.subplots(2,2),其中参数分别代表子图的行数和列数,一共有 2x2 个图像。函数返回一个figure图像和一个子图ax的array列表。

补充:gridspec命令可以对子图区域划分提供更灵活的配置。

Tick Locators

Tick Locators 控制着 ticks 的位置。比如下面:

ax = plt.gca()
ax.xaxis.set_major_locator(eval(locator))

一些不同类型的locators:

代码如下:

import numpy as np
import matplotlib.pyplot as plt


def tickline():
plt.xlim(0, 10), plt.ylim(-1, 1), plt.yticks([])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('none')
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.1))
ax.plot(np.arange(11), np.zeros(11))
return ax

locators = [
'plt.NullLocator()',
'plt.MultipleLocator(1.0)',
'plt.FixedLocator([0, 2, 8, 9, 10])',
'plt.IndexLocator(3, 1)',
'plt.LinearLocator(5)',
'plt.LogLocator(2, [1.0])',
'plt.AutoLocator()',
]

n_locators = len(locators)

size = 512, 40 * n_locators
dpi = 72.0
figsize = size[0] / float(dpi), size[1] / float(dpi)
fig = plt.figure(figsize=figsize, dpi=dpi)
fig.patch.set_alpha(0)


for i, locator in enumerate(locators):
plt.subplot(n_locators, 1, i + 1)
ax = tickline()
ax.xaxis.set_major_locator(eval(locator))
plt.text(5, 0.3, locator[3:], ha='center')

plt.subplots_adjust(bottom=.01, top=.99, left=.01, right=.99)
plt.show()

所有这些locators均来自于基类matplotlib.ticker.Locator。你可以通过继承该基类创建属于自己的locator样式。同时matplotlib也提供了特殊的日期locator, 位于matplotlib.dates.

对图像组成不了解?这样学习Matplotlib必走弯路!

在学习Matplotlib的过程中,大家一定会遇到这样那样的问题,比如说,背景图怎么设置?坐标轴怎么设置?坐标轴上的刻度值怎么设置?怎样在PyQt中添加Matplotlib绘图模块? 其实想要学好用...
  • tiantian12234
  • tiantian12234
  • 2017-08-17 12:43:24
  • 269

【matplotlib】详解图像各个部分

首先一幅Matplotlib的图像组成部分介绍。 在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有...
  • captain811
  • captain811
  • 2018-02-03 22:53:13
  • 22

Python使用matplotlib填充图形指定区域代码示例

Python使用matplotlib填充图形指定区域代码示例本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法。importnumpy a...
  • jiahaowanhao
  • jiahaowanhao
  • 2018-02-15 13:31:39
  • 103

【基本图像操作】Matplotlib

声明:笔记来源于【python计算机视觉】一书。Matplotlib简介Matplotlib具有比PIL更强大的绘图功能,可以绘制条形图,饼状图,散点图等。绘制图像,点,线用四个点绘制和一条线绘制图像...
  • xunalove
  • xunalove
  • 2017-09-07 17:50:52
  • 242

matplotlib绘制函数、导数图像

# -*- coding: utf-8 -*- import matplotlib # 确定坐标轴 plt.xlim((-3, 3)) plt.ylim((-70, 150...
  • zjjtilm
  • zjjtilm
  • 2018-01-19 14:28:54
  • 325

Numpy、matplotlib实现二维数据到图像的转换,添加colormap,无边距显示

1.首先需要得到原始图像的大小 从向量shape到矩阵:import numpy as np data = np.reshape(vector,(101,101)) #101*101是要转换成的图片...
  • u010105243
  • u010105243
  • 2017-08-04 21:27:07
  • 797

用Python的Matplotlib模块进行基本的图像操作

#Matplotlib的相关使用 from PIL import Image from pylab import * #array()以数组形式读取图像 im=array(Image.open('te...
  • cymy001
  • cymy001
  • 2017-09-13 22:16:43
  • 305

如何用matplotlib画图并保存图像

1. 首先,import头文件如下: import matplotlib matplotlib.use('Agg') from matplotlib.pyplot import plot,s...
  • scut_salmon
  • scut_salmon
  • 2017-12-18 15:08:32
  • 1617

【python 图像切割】matplotlib读取图像,裁剪图像

#-*-coding:utf-8-*- import sys reload(sys) sys.setdefaultencoding('utf-8')import matplotlib.pylab as...
  • u013421629
  • u013421629
  • 2017-08-29 14:47:38
  • 682

为什么matplotlib显示opencv图像不正常

在前面的《数字图像的加载、显示和输出》中提到,opencv对多个图片输出在同一个窗口并没有直接的支持手段,但有时候我们会有这个需求,这时可以用matplotlib搭配使用。下面将4张图片放在一个窗口中...
  • saltriver
  • saltriver
  • 2017-10-08 09:41:13
  • 999
收藏助手
不良信息举报
您举报文章:【Matplotlib】详解图像各个部分
举报原因:
原因补充:

(最多只允许输入30个字)