[python][科学计算][matplotlib]简要使用教程1-绘图结构

最后一次更新日期: 2019/4/20

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

按需导入以下模块:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

1. 图像figure

In [71]: fig=plt.figure(1)
In [72]: fig=plt.figure(2,figsize=(5,3))
In [73]: fig.suptitle('title') Out[73]: Text(0.5,0.98,'title')

Figure是所有绘图元素的顶级容器,可以认为是一张画布,第一个参数num设置图像的编号,第二个figsize参数设置图像大小。

Figure.suptitle方法用于设置图像的总标题(也可通过plt.suptitle设置),fontsize参数可以设置字体大小,xy参数设置位置坐标,取值为0.~1.的相对于Figure的宽和高的比例。

Figure上无法直接绘图,需要至少添加一个Axes,在调用plt的静态方法绘图时,会绘制在最近声明的一个Figure上,不显示声明则会自动按默认配置创建FigureAxesplt.gcf()方法可以获取当前正在绘制的Figure

Figure.axes可以获取图像下的所有Axes
Figure.clf()方法可以清空图像。

Artist是matplotlib中所有绘图对象的基类,Figure也是继承自该类,可在官方文档查看到完整的继承关系。

2. 坐标轴axes

x=np.arange(0,720,1)
y1=np.sin(x*np.pi/180)
y2=np.cos(x*np.pi/180)

#方法1
fig=plt.figure(figsize=(7.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_axes((0,0,0.5,0.8),title='ax1')
ax.plot(x,y1)
ax=fig.add_axes((0.6,0,0.5,0.8),title='ax2')
ax.plot(x,y2)
plt.show(fig)
#方法2
fig=plt.figure(figsize=(10.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_subplot(121,title='ax1', projection='3d')
ax.plot(x,y1)
ax=fig.add_subplot(122,title='ax2', projection='3d')
ax.plot(x,y2)
plt.show(fig)

Axes的意思是用于绘图的坐标轴,AxesSubplot是封装了Axes的子图,通过不同的方法创建,子图在布局上更方便,绘图时则没有明显的区别,下面会将Axes也称作子图。

绘制不同图像会使用不同轴类型,最常用的xy坐标轴和xyz坐标轴分别为AxesAxes3D。如果只需要一个Axes,可以不显示声明,直接调用plt的静态方法绘制,Axes会被自动创建(通过add_subplot(111))。当存在多个Axes时,可以调用Axes的方法绘图以保证图像被绘制在正确的子图上,调用静态方法绘制时实际上是通过plt.gca()获取了最后声明的Axes

Axes.plot是绘图方法,用于绘制曲线图。
Axes在绘图时需要提供x,y两个轴的坐标,而Axes3D需要提供x,y,z三个轴的坐标,上方的例子中没有提供z轴坐标所以图像被绘制在高度为0的一个平面上。

Axes是绑定在Figure上的,可通过调用Figureadd_axesadd_subplot方法创建新的Axes或是将已有Axes添加到Figure上。两种方法在子图的大小和位置的设置上有所区别,需要相应的调整参数。
add_axes方法的第一个参数rect通过一个浮点数序列设置Axes的位置和大小,格式为(left,bottom,width,height),值均为0.~1.的相对于Figure的宽和高的比例。
add_subplot方法的前三个参数分别设置区间划分的行数、列数、以及子图的索引,例如2,3,5表示将Figure划分为2行3列,在其中第5个区间上添加子图;前三个参数可以替换为单个3位整数表示同一含义,但每位的值不得超过10,例如2,3,5对应235
title参数用于设置子图的标题,也可通过Axes.set_titleplt.title方法设置;
projection参数设置投影类型,即坐标轴类型,其中,'rectilinear'表示直线(xy)坐标轴,也是默认值,'3d'表示3D(xyz)坐标轴。

除以上两种方法,还可使用fig,ax_list = plt.subplots(figsize=(10.5,3),ncols=2,nrows=1)快速规划画布,只需要指定画布大小、列划分数量和行划分数量,省去写循环的时间。

get_children方法能够获取Axes下的所有绘图元素;
collections属性能够获取所有绘图元素集合;
如想获取指定类型的元素,可使用get_xlabel等方法;
cla方法可以清除当前轴的内容。

3. 显示show

plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()



plt.show()方法用于显示已绘制的图像,一般配合plt的静态绘图方法使用(即不显示声明Figure的情况)。在使用静态方法绘图时,如果不调用show,则代码段的中所有绘图元素将会绘制在自动创建的同一Figure的同一Axes上。

在ipython中,直接输入Figure的变量名也可以将其图像显示出来;在执行一段含绘图语句的代码段后,也会自动显示图像。

4. 保存save

fig.savefig('D:\\test.jpg')

Figuresavefig方法可以保存图片至指定路径,也可调用plt的静态方法保存,但必须和绘图的代码一起执行,且必须在show方法之前执行。

ipython中直接右键显示出来的图片也有保存的选项。

你可能感兴趣的:([python][科学计算][matplotlib]简要使用教程1-绘图结构)