Imshow子图使用AxesGrid共享colorbar。如何绘制网格并设置刻度数

时间:2014-03-02 11:58:38

标签: matplotlib grid subplot imshow

我的程序使用相同的颜色条绘制三个子图。这是代码:

fig=pl.figure()
grid = AxesGrid(fig, 111,nrows_ncols=(3,1),
            axes_pad = 0.2,
            share_all=True,
            label_mode = "L",
            cbar_location = "right",
            cbar_mode="single",
            cbar_size='1%'
            )

im = grid[0].imshow(np.random.random((10,50)))  
grid.cbar_axes[0].colorbar(im)
im = grid[1].imshow(np.random.random((10,50)))
im = grid[2].imshow(np.random.random((10,50)))
pl.show()

这提供了以下图片:

不,我想先设置滴答数。例如。 y轴上有3个刻度,x轴上有10个刻度。此外,我想在图片中绘制一个网格。但是,只有当我不使用AxisGrid时,我的正常编码才有效:

fig=pl.figure()
im = imshow(np.random.random((10,50)))
pl.locator_params(axis='x',nbins=20)
pl.locator_params(axis='y',nbins=3)
pl.grid()
pl.show()

如何将网格绘制到子图中并更改刻度数?

1 个答案:

答案 0 :(得分:2)

试试这个:

im = grid[0].imshow(np.random.random((10,50)))  
ax = im.get_axes( )
ax.grid( 'on' )
ax.locator_params(axis='x',nbins=20)
ax.locator_params(axis='y',nbins=3)