matplotlib绘图库之Artist对象介绍
发布时间:2021-11-12 12:13:34 所属栏目:教程 来源:互联网
导读:Matplotlib是一个面向对象的绘图库,在最终图像上所呈现出来的所有元素,都是一个可以控制的对象,那么如何理解绘图的过程呢?可以简单地类比在画布上画图的过程, 首先大致的绘制流程: 创建Figure对象(相当于在画架上添加画布) 为灭一个Figure对象添加一
Matplotlib是一个面向对象的绘图库,在最终图像上所呈现出来的所有元素,都是一个可以控制的对象,那么如何理解绘图的过程呢?可以简单地类比在画布上画图的过程, 首先大致的绘制流程: 创建Figure对象(相当于在画架上添加画布) 为灭一个Figure对象添加一个或者多个Axes对象(在某张画布上划分不同的画图区域) 调用Axes对象的方法来创建各种简单类型的Artist对象(在某一个画图区域添加各种具体的元素) 简单来说,最大的Figure中可以包含多个Axes,在每个Axes中,又可以绘制各种基本的图像。 具体来看三种层次的主要对象: Figure对象 Figure对象,或者说是容器,是最大一层次的对象,就相当于一张画布,包含图像的所有元素,一个Figure对象最后的表现就是一张图像,例如: import matplotlib.pyplot as plt import numpy as np from matplotlib.lines import Line2D fig1 = plt.figure(1) fig2 = plt.figure(2) plt.show() 运行之后,我们可以得到两张空图: matplotlib绘图库之Artist对象详解 在Figure中也可以添加简单的Artist对象,比如文字,线条等,例如添加两条线: import matplotlib.pyplot as plt import numpy as np from matplotlib.lines import Line2D fig1 = plt.figure() line1 = Line2D([1, 0], [1, 0], transform=fig1.transFigure, figure=fig1, color='r') line2 = Line2D([1, 0], [0, 1], transform=fig1.transFigure, figure=fig1, color='g') fig1.lines.extend([line1, line2]) plt.show() matplotlib绘图库之Artist对象详解 一般情况下,我们不会在Figure中绘制这样的图像,这样一张图只能绘制一组图像,所以就用到了Axes对象来添加子图。 Axes对象 Axes,称之为子图,可以这样理解,在绘制漫画的时候,一张画布上有很多格子,不同的格子内容可以独立绘制,这里的格子就是Axes对象。 在某张Figure中添加子图的时候有两种常用方式: figure.add_axes() figure.add_subplot() 简单例子: ax1 = fig1.add_subplot(221) ax2 = fig1.add_subplot(224) 效果如下: matplotlib绘图库之Artist对象详解 ax3 = fig2.add_axes([0.2, 0.2, 0.6, 0.4]) ax4 = fig2.add_axes([0.2, 0.7, 0.6, 0.2]) 效果如下: matplotlib绘图库之Artist对象详解 这里的函数传入四个参数,分别指定了左边距,下边距,宽度和高度,都是小于1 的数字,其实就相当于等比例划分,大致估计一下宽度和高度就可以看出来。 其实这两个方法创建的对象还是有点区别的,add_subplot() 函数创建的对象是SubplotAxes, 另一个则是Axes对象,SubplotAxes是Axes的派生类。 下面这个例子中说明一些dui子图对象属性的设置方法,对于所有的对象都可以使用这两种方式: import matplotlib.pyplot as plt import numpy as np fig1 = plt.figure() # 可以设置多个属性的值 ax1 = fig1.add_subplot(221) ax1.set(facecolor='lightgreen', title='Axes 1') # 分别设置每种属性 ax2 = fig1.add_subplot(224) ax2.set_facecolor('lightblue') ax2.set_title('Axes 2') plt.show() 效果如下: matplotlib绘图库之Artist对象详解 有了每个格子,那么最后一步就是每一个格子中的内容了。 曲线等简单Artist对象 绘制好了格子,那么添加的曲线,刻度等都是最后一层的内容了,例如,在不同Axes中绘制图像,在上面的代码中添加: x = np.linspace(-np.pi, np.pi, 100) y1 = np.sin(x) y2 = np.cos(x) ax1.plot(x, y1) # 在ax1子图中绘制 ax2.plot(x, y2) # 在 ax2子图中绘制 matplotlib绘图库之Artist对象详解 同样,每条曲线,或者每个坐标轴都是一个对象,例如,获取曲线对象,如对它的属性进行设置,同样设置的方式有两种,分别是集中设置或者分散设置: line1 = ax1.plot(x, y1)[0] # 注意 获取曲线对象的方式返回的是一个list,所以注明是第一个元素 line1.set_color('red') line1.set_linewidth(5) line2 = ax2.plot(x, y2)[0] line2.set(color='blue', linewidth=2) 效果: matplotlib绘图库之Artist对象详解 上面演示的Line对象,还有像Axis对象,控制的是坐标轴,包括对刻度等等进行设置,原理是一样的。 import matplotlib.pyplot as plt import numpy as np fig1 = plt.figure() # 可以设置多个属性的值 ax1 = fig1.add_subplot(221) ax1.set(facecolor='lightgreen', title='Axes 1') # 分别设置每种属性 ax2 = fig1.add_subplot(224) ax2.set_facecolor('lightblue') ax2.set_title('Axes 2') x = np.linspace(-np.pi, np.pi, 100) y1 = np.sin(x) y2 = np.cos(x) ax1.plot(x, y1) # 在ax1子图中绘制 ax2.plot(x, y2) # 在 ax2子图中绘制 line1 = ax1.plot(x, y1)[0] # 注意 获取曲线对象的方式返回的是一个list,所以注明是第一个元素 line1.set_color('red') line1.set_linewidth(5) line2 = ax2.plot(x, y2)[0] line2.set(color='blue', linewidth=2) plt.show() 基本就这样。 (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |