matplotlib基础知识全面解析

图像基本知识:

通常情况下,我们可以将一副Matplotlib图像分成三层结构:

1.第一层是底层的容器层,主要包括Canvas、Figure、Axes;

2.第二层是辅助显示层,主要包括Axis、Spines、Tick、Grid、Legend、Title等,该层可通过set_axis_off()或set_frame_on(False)等方法设置不显示;

3.第三层为图像层,即通过plot、contour、scatter等方法绘制的图像。

matplotlib基础知识全面解析

容器层:容器层主要由Canvas、Figure、Axes组成

  Canvas是位于最底层的系统层,绘图过程中充当画板的角色,即放置画布的工具。通常情况下,我们并不需要对Canvas特别的声明,但是当我需要在其他模块如PyQt中调用Matplotlib模块绘图时,就需要首先声明Canvas,这就相当于我们在自家画室画画不用强调要用画板,出去写生时要特意带一块画板。

  Figure(fig)是Canvas上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。当我们对Figure大小、背景色彩等进行设置的时候,就相当于是选择画布大小、材质的过程。因此,每当我们绘图的时候,写的第一行就是创建Figure的代码。

  Axes(ax,坐标系)是应用层的第二层,在绘图的过程中相当于画布上绘图区的角色。一个Figure对象可以包含多个Axes对象,每个Axes都是一个独立的坐标系,绘图过程中的所有图像都是基于坐标系绘制的。

matplotlib基础知识全面解析

辅助显示层:

  辅助显示层为Axes内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。该层的设置可使图像显示更加直观更加容易被用户理解,但又并不会对图像产生实质的影响。

图像层:

  图像层指Axes内通过plot、scatter、hist、contour、bar、barbs等函数根据数据绘制出的图像。

matplotlib基础知识全面解析

保存图表plt.savefig()

  调用plt.savefig()将当前的Figure对象保存成图像文件,图像格式由图像文件的扩展名决定。下面程序将当前的图表保存为“test.png”,并且通过dpi指定图像的分辨率为120,因此输出图像的宽度为“8X120 = 960”个像素。使用这种方法可以很容易编写出批量输出图表的程序。plt.savefig("test.png",dpi=120)

plt.imshow()

imshow()函数格式为:matplotlib.pyplot.imshow(X, cmap=None)

X: 要绘制的图像或数组

cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。其它可选的颜色图谱如下列表:

颜色图谱

描述

autumn

红-橙-黄

bone

黑-白,x线

cool

青-洋红

copper

黑-铜

flag

红-白-蓝-黑

gray

黑-白

hot

黑-红-黄-白

hsv

hsv颜色空间, 红-黄-绿-青-蓝-洋红-红

inferno

黑-红-黄

jet

蓝-青-黄-红

magma

黑-红-白

pink

黑-粉-白

plasma

绿-红-黄

prism

红-黄-绿-蓝-紫-...-绿模式

spring

洋红-黄

summer

绿-黄

viridis

蓝-绿-黄

winter

蓝-绿

Plt.figure()

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None)

所有参数都是可选的,都有默认值,因此调用该函数时可以不带任何参数,其中:

num: 整型或字符型都可以。设置为整型,则该整型数字表示窗口序号。设置为字符型,则该字符串表示窗口名称。用该参数来命名窗口,两个窗口序号或名相同,则后一个窗口会覆盖前一个窗口。

figsize: 设置窗口大小。是一个tuple型的整数,如figsize=(8,8)。

dpi: 整形数字,表示窗口的分辨率。

facecolor: 窗口的背景颜色。edgecolor: 窗口的边框颜色。

用figure()函数创建的窗口,只能显示一幅图片,显示多幅图片,则需要将这个窗口再划分为几个子图,在每个子图中显示不同的图片。

可以使用subplot()函数来划分子图,函数格式为:

matplotlib.pyplot.subplot(nrows, ncols, plot_number)

nrows: 子图的行数。

ncols:  子图的列数。

plot_number: 当前子图的编号。

ax.get_xlim()

获得Axes的x坐标范围,默认是 (0.0, 1.0)

ax.get_yscale()

获得y轴的数据刻画类型

ax.set_xscale('log')

将x轴设置为log

plt.tight_layout()

如果有多个子图,我们可以使用tight_layout()函数来调整显示的布局,该函数格式为:

matplotlib.pyplot.tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)

所有的参数都是可选的,调用该函数时可省略所有的参数:

pad: 主窗口边缘和子图边缘间的间距,默认为1.08

h_pad, w_pad: 子图边缘之间的间距,默认为 pad_inches

rect: 一个矩形区域,如果设置这个值,则将所有的子图调整到这个矩形区域内。

一般调用为:plt.tight_layout()  #自动调整subplot间的参数

上一篇:C#学习单向链表和接口 IList


下一篇:(后端)SpringBoot中Mybatis打印sql(转)