python - 使用极投影将颜色条添加到 pcolormesh

标签 python matplotlib

我正在尝试将颜色条添加到具有极坐标投影的 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()

最佳答案

在你这样做的方式中,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)

enter image description here

关于python - 使用极投影将颜色条添加到 pcolormesh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894625/

相关文章:

python - 描述没有重复的图例

python - 在一张图中绘制两条曲线时遇到错误(python-pandas-matplotlib)

android - Android : how to see graph? 上带有 Pydroid 3 的 Matplotlib

python - 为什么 Pandas '==' 与 '.eq()' 不同

python - 如何使用 Python 读取 excel Unicode 字符

python - 旋转标题和列

python - 删除列表中的每个第 n 个元素,直到剩下 1 个元素

python - Django ContentFile get_available_name() 得到了一个意外的关键字参数 'max_length'

python - map 投影和强制插值

python - 删除 gridspec matlibplot 图的 xticks 和 yticks