Matplotlib:子图

时间:2016-02-19 16:31:41

标签: python loops matplotlib subplot

我有几个时间序列信号(8x8),我想用子图绘制。我的数据存储在一个名为H(x,y,N)的矩阵中,其中N是每个信号中的点数。我想使用子图显示64个信号。

fig  = figure(figsize=(12,8))
time = np.arange(0, Nt, 1)

for x in range(8):
    for y in range(8):
        subplot(8,y+1,x+1)
        plot(time,H[x,y,:])

我得到的是第一行中的8个信号,第二行中的4个信号,然后是第2,第2,第1,第1和第1行。

1 个答案:

答案 0 :(得分:2)

那不是subplot索引的工作方式。来自docs to subplot

  

subplot(nrows, ncols, plot_number)

     

其中nrows和ncols用于在概念上将图形拆分为nrows * ncols子轴,而 plot_number 用于标识此函数在名义网格中创建的特定子图。 plot_number 从1开始,首先跨行递增,最大值为nrows * ncols

因此,您希望{1-}},nrows=8以及ncols=8在1-64范围内,例如:

plot_number

要删除刻度标签,请使用nrows,ncols = 8,8 for y in range(8): for x in range(8): plot_number = 8*y + x + 1 subplot(nrows,ncols,plot_number) plot(time,H[x,y,:]) # Remove tick labels if not on the bottom/left of the grid if y<7: gca().set_xticklabels([]) if x>0: gca().set_yticklabels([]) 获取当前轴,并将gca()xticklabels设置为空列表:yticklabels