使用Gridsp中的网格在网格内绘制问题

2024-10-03 15:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着在matplotlib中的一个网格中创建一个图形。我使用的是matplotlib1.1.1和python2.7.4。在

我遵循文档页上的示例:http://matplotlib.org/users/gridspec.html#a-complex-nested-gridspec-using-subplotspec

fig = plt.figure(figsize=(11, 10))
levels2=[2,8,32,64,128, 256, 512]
bins=100

def plotcmd(ax, x, y, bins, levels):
    cmap=cm.Greys
    cmap.set_gamma(0.8)

    h, xe, ye = np.histogram2d(x, y, bins=70)
    cont = ax.contourf(h.T, extent=[xe[0],xe[-1], ye[0],ye[-1]], levels=levels,
        zorder=2, cmap=cmap)
    cont = ax.contour(h.T, extent=[xe[0],xe[-1], ye[0],ye[-1]], levels=levels, zorder=3,
        colors=('black', 'black', 'black','black'))
    # set limits
    plt.xlim(-1, 5)
    plt.ylim(13, 2)


for i in xrange(4):
    inner_grid = gridspec.GridSpecFromSubplotSpec(1, 3,
        subplot_spec=outer_grid[i], wspace=0.0, hspace=0.0)
    for j in xrange(3):
        ax = plt.Subplot(fig, inner_grid[j])
        plotcmd(ax, data1[:,0]-data1[:,1], data1[:,1], bins, levels2)
        ax.set_xticks([])
        ax.set_yticks([])
        fig.add_subplot(ax)

因此,这应该创建一个有四个外部面板的图形,每个面板承载三个内部面板。这几乎是正确的,但最终的情节有两个问题:

1.)最后的绘图,所以当i==3和j==2时,不符合我在plotcmd中设置的限制,就好像它们不存在一样

2.)在四个大的面板下面,正在绘制一个图形。在

我不明白为什么,如果所有的迹象都表明我正确地迭代了内外网格,那么x和y限制不会影响最终的绘图。在

谢谢你的帮助。在

亚历山大


Tags: 图形面板figpltaxgridcmapblack
1条回答
网友
1楼 · 发布于 2024-10-03 15:29:16

正如tcaswell所建议的那样,我将matplotlib的版本升级到了1.3.2,但是这并没有解决gridspec的问题,但是我能够让它按照我想要的方式工作。在

我不一定理解为什么我以前的代码会有这样的效果,但一旦我将plotcmd函数改为如下所示:

def plotcmd(x, y, bins, levels, ax):
    h, xe, ye = np.histogram2d(x, y, bins=bins)
    ax.contourf(h.T, extent=[xe[0],xe[-1], ye[0],ye[-1]],
                        levels=levels, zorder=2, cmap=cmap)
    ax.contour(h.T, extent=[xe[0],xe[-1], ye[0],ye[-1]],
                       levels=levels, colors=('black', 'black', 'black','black'))
    ax.set_xlim(-1, 5)
    ax.set_ylim(13, 2)

结果图看起来不错。在

相关问题 更多 >