【问题标题】:Colormap entire subplot颜色映射整个子图
【发布时间】:2013-11-12 10:14:01
【问题描述】:

我在使用彩色地图时遇到了一些问题。基本上,我想要制作的内容类似于下图。

在底部子图上,我希望能够绘制相关颜色,但跨越子图的整个背景。即它看起来就像整个图上的颜色图,没有绘制线或点。它仍应与散点图中显示的颜色相对应。

可以这样做吗?我最理想的做法是把这个背景放在最上面的子图下。 (y 比例单位不同)

感谢您的帮助。

底部散点图的

代码

x = np.arange(len(wind))
y = wind
t = y
plt.scatter(x, y, c=t)

其中风是一维数组

【问题讨论】:

    标签: python matplotlib color-mapping


    【解决方案1】:

    您可以使用 imshow 来显示您的风阵。它需要重新整形为二维数组,但“高度”维度可以是长度 1。将范围设置为顶部轴的维度使其与其对齐。

    wind = np.random.randn(100) + np.random.randn(100).cumsum() * 0.5
    x = np.arange(len(wind))
    y = wind
    t = y
    
    fig, ax = plt.subplots(2,1,figsize=(10,6))
    
    ax[0].plot(x,y)
    
    ax[1].plot(x, 100- y * 10, lw=2, c='black')
    
    ymin, ymax = ax[1].get_ybound()
    xmin, xmax = ax[1].get_xbound()
    
    im = ax[1].imshow(y.reshape(1, y.size), extent=[xmin,xmax,ymin,ymax], interpolation='none', alpha=.5, cmap=plt.cm.RdYlGn_r)
    ax[1].set_aspect(ax[0].get_aspect())
    
    cax = fig.add_axes([.95,0.3,0.01,0.4])
    cb = plt.colorbar(im, cax=cax)
    cb.set_label('Y parameter [-]')
    

    如果您想将其用作“背景”,您应该首先绘制您想要的任何内容。然后抓取底部绘图的范围并将其设置为imshow 的范围。您还可以使用cmap=imshow 提供您想要的任何颜色图。

    【讨论】:

    • 谢谢,是否也可以将其用作另一个绘图的背景(具有相同的 x 比例,但不同的 y 比例),并将比例放在颜色条中
    • 也可以将其设置为不同的颜色图吗?
    • 很好,顺便说一句,请注意折线图中的点如何与彩色垂直“条”的开头对齐。您可以通过在以下范围内减去一半 x-unit 将其移至中心:extent=[xmin-.5,xmax-.5,ymin,ymax]
    猜你喜欢
    • 2022-01-16
    • 2017-12-02
    • 2019-04-13
    • 2011-09-02
    • 2018-08-04
    • 2016-02-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多