使用这些方法需要先导入matplotlib.pyplot模块。
import matplotlib.pyplot as plt
后面使用plt代表matplotlib.pyplot.
这些方法主要就是在一个大的图表窗口中建立一些小的图像窗口,要使用这些方法首先我们先使用plt.figure()创建一个图像窗口,在使用这些方法来创建小图。
subplot
使用subplot()方法将图表分割成网格,其中第一个参数是行数,第二个参数是列数,第三个参数是图形的标号(即表示是第几个图形)
eg:
1
|
2
|
3
|
4
|
import matplotlib.pyplot as plt plt.figure() #首先创建一个图表,接下来的操作都将会在此表上操作 plt.subplot(2,2,1) #将表示整个图像分为2行2列,当前图像位于第1个位置 plt.plot([0,1],[0,1]) #plot()方法中的2个参数分别为x,y轴的取值.如果只写一个,就是y轴的值,系统会给x轴提供默认值 plt.subplot(2,2,2) #当前图像位于第2个位置 plt.plot([0,1],[0,2]) plt.subplot(223) #也可以省掉中间的‘,’符号 plt.plot([0, 1], [0, 3]) plt.subplot(224) plt.plot([0, 1], [0, 4]) plt.show() #将图形展示到屏幕
当然了,你还可以通过自己需要设计各种样式的排版,例如我们可以让第一个图像独占一行,其余三个图像一起占一行
plt.subplot(2,1,1) plt.plot([0,1],[0,1]) plt.subplot(2,3,4) plt.plot([0,1],[0,1]) plt.subplot(2,3,5) plt.plot([0,2],[0,1]) plt.subplot(2,3,6) plt.plot([0,2],[0,1])
口说无凭,给大家上图理解一下
这里大家对上述代码可能有些疑问?为什么第一个是(2,1,1)第二个是(2,3,4),大家不要忘记我们的目的,我们是希望第一个图占一整行,其余三个占一行。所以我们第一个(2,1,1)就是将整个图像分成了2个,第一个就占了一行,怎么让其余三个占一行了,那我们就需要将图像再次分啊,所以(2,3,4)就将整个图形重新分成了2行3列,也就是每一行都有3个图,所以就意味着第二行的第一个图应该是从4开始的。
subplots
matplotlib.pyplot.subplots用来方便的创建普通布局的子区。我们可以指定网格的大小--子区网格的行数和列数。
我们可以创建共享x或者y轴的子区,通过使用sharex或者sharey关键字参数来完成。
将sharex参数设置为True,则x轴就被所有子区共享。这样刻度标签就只会在最后一行的子区上可见。除了设置为True之外还可以设置为字符串,如,row,col,all或者none.all和True相同,none和False相同。设置为row则每个子区共享x轴坐标,对应col就共享y轴坐标。
subplot2grid
我们定义网格的几何形状和位置,位置是基于0的,而不是像subplot那样基于1.
可以使用colspan和rowspan来让子区跨越给定的网格中的多个行和列。
import matplotlib.pyplot as plt plt.figure() axes1 = plt.subplot2grid((3,3),(0,0), colspan=3) axes2 = plt.subplot2grid((3,3),(1,0), colspan=2) axes3 = plt.subplot2grid((3,3),(1,2)) axes4 = plt.subplot2grid((3,3),(2,0)) axes5 = plt.subplot2grid((3,3),(2,1), colspan=2) all_axes = plt.gcf().axes for ax in all_axes: for ticklabel in ax.get_xticklabels() + ax.get_yticklabels(): ticklabel.set_fontsize(10) plt.suptitle("Demo of subplot2grid") plt.show()
这里解释一下gcf,MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。
以上就是这些了,目前自己也正在学习,如果有错希望大家多多指正。