【问题标题】:Adding a colorbar to a pcolormesh with polar projection使用极坐标投影将颜色条添加到 pcolormesh
【发布时间】:2014-07-29 23:50:10
【问题描述】:

我正在尝试将颜色条添加到具有极坐标投影的 pcolormesh 图中。如果我不指定极坐标投影,则代码可以正常工作。指定极坐标投影后,会产生一个很小的绘图,并且颜色条不存在。我是在做一些愚蠢的事情,还是这是一个错误?我在 Fedora 20 上使用 matplotlib 1.3.1。

import matplotlib.pyplot as plot
import mpl_toolkits.axes_grid1 as axes_grid1
import numpy as np

t = np.linspace(0.0, 2.0 * np.pi, 360)
r = np.linspace(0,100,200)
rg, tg = np.meshgrid(r,t)
c = rg * np.sin(tg)

# If I remove the projection="polar" argument here the 
ax = plot.subplot2grid((1, 1), (0, 0), projection="polar", aspect=1.)
im = ax.pcolormesh(t, r, c.T)
divider = axes_grid1.make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
plot.colorbar(im, cax=cax)
plot.show()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    按照您的操作方式,cax 轴实际上位于polar 投影中。您可以通过以下方式进行验证:

    cax = divider.append_axes("right", size="200%", pad=0.5)
    #plot.colorbar(im, cax=cax)
    cax.pcolormesh(t, r, c.T)
    

    虽然这可能是一个错误,但我认为实现它的更简洁的方法可能是使用GridSpec

    gs = gridspec.GridSpec(1, 2,
                           width_ratios=[10,1],
                           )
    
    ax1 = plt.subplot(gs[0], projection="polar", aspect=1.)
    ax2 = plt.subplot(gs[1])
    
    t = np.linspace(0.0, 2.0 * np.pi, 360)
    r = np.linspace(0,100,200)
    rg, tg = np.meshgrid(r,t)
    c = rg * np.sin(tg)
    
    im = ax1.pcolormesh(t, r, c.T)
    plot.colorbar(im, cax=ax2)
    

    【讨论】:

    • 非常感谢 - 我应该在我的问题中添加我已经解决了 Gridspec 的问题 :)
    猜你喜欢
    • 2022-07-25
    • 1970-01-01
    • 2019-08-29
    • 2011-01-10
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多