subplot,subplot2gird,gridspec,subpplots的使用

使用这些方法需要先导入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的对象。
以上就是这些了,目前自己也正在学习,如果有错希望大家多多指正。

猜你喜欢

转载自www.cnblogs.com/Omasker/p/9134957.html