【问题标题】:Overplotting contours over subplots in matplotlib在 matplotlib 中的子图上过度绘制轮廓
【发布时间】:2021-04-12 10:58:52
【问题描述】:

我有 2 组数据,其中一组必须显示在条形子图中,如下所示:

第二组只是我需要从中绘制轮廓的数据。 matplotlib 中有没有一种方法可以在与条形子图相同的图形上绘制轮廓,以获得如下效果:

我用来生成子图的代码:

nl = 0 无花果,axs = plt.subplots(16,16, sharex='col', sharey='row', gridspec_kw={'hspace': 0, 'wspace': 0}, dpi = 300) 对于范围内的 p (16): 对于范围内的 r (16): axs[p,r].set_ylim(0,1.1) axs[p,r].set_xlim(-150,150) axs[p,r].xaxis.set_ticklabels([]) axs[p,r].yaxis.set_ticklabels([]) axs[p,r].xaxis.set_ticks([]) axs[p,r].xaxis.set_ticks([]) axs[p,r].tick_params(width=0) axs[p,r].bar(xp,wid[nl], 宽度 = 10) nl += 1

另外,我非常感谢您提出如何使这些子图呈正方形的建议(如第二张图片)

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    您可以简单地使用几何 (1,1,1) 创建一个新的子图,也就是说,占据子图的所有可用空间,从而覆盖所有其他子图。

    如果您想查看下面的子图(使用ax.patch.set_visible(False)),您必须确保隐藏该顶轴的背景补丁。或者,由于您希望删除轴上的所有刻度,您可以使用 set_axis_off() 删除所有刺和装饰,包括背景补丁。

    至于正方形子图,如果你创建一个正方形,你会得到正方形子图

    N = 5  # for demonstration
    w = 4
    
    fig, axs = plt.subplots(N,N, sharex='col', sharey='row', gridspec_kw={'hspace': 0, 'wspace': 0}, dpi=100, figsize=(w,w))
    for ax in axs.flat:
        ax.set_ylim(0,1.1)
        ax.set_xlim(-150,150)
        ax.xaxis.set_ticklabels([])
        ax.yaxis.set_ticklabels([])
        ax.xaxis.set_ticks([])
        ax.xaxis.set_ticks([])
        ax.tick_params(width=0)
        #ax.bar(xp,wid[nl], width = 10)
    
    # create another axes over the grid
    ax0 = fig.add_subplot(111)
    ax0.set_axis_off()  # hides all axes decoration (also hides the background)
    #ax0.patch.set_visible(False)  # hides the background of the axes
    
    
    # plot contour
    # code from https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/contour_demo.html#sphx-glr-gallery-images-contours-and-fields-contour-demo-py
    delta = 0.025
    x = np.arange(-3.0, 3.0, delta)
    y = np.arange(-2.0, 2.0, delta)
    X, Y = np.meshgrid(x, y)
    Z1 = np.exp(-X**2 - Y**2)
    Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
    Z = (Z1 - Z2) * 2
    
    CS = ax0.contour(X, Y, Z)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 2012-11-06
      相关资源
      最近更新 更多