3

我在一个大小为 (512, 768) 的 2D numpy 数组中有一些模拟数据。

该数据从 rmin = 1 模拟到 rmax = 100 和 phi 从 0 到 2pi

我尝试将其绘制在极坐标图上,但如果没有径向偏移,这看起来真的很奇怪。注意:图像来自径向密度分布,因此绘图应该是径向对称的。

没有 xlim/ylim 设置:

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array

ax.pcolormesh(rho)
fig.show()

没有偏移和 xlim/ylim 的径向图

使用 xlim/ylim 设置:

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array
print rho.shape

ax.axis([x_scale[0], x_scale[-1], y_scale[0], y_scale[-1]])

ax.pcolormesh(rho)
fig.show()

没有偏移的径向图

带有手动轴 + X/Y 值。

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

rho = // 2D numpy array
print rho.shape

ax.axis([x_scale[0], x_scale[-1], 0, y_scale[-1]])
y_scale_with_offset = np.insert(y_scale, 0, 0)

ax.pcolormesh(x_scale, y_scale_with_offset, rho)

ax.pcolormesh(rho)

在此处输入图像描述

有没有从 1 添加径向偏移的技巧?

4

1 回答 1

1

我相信你可以使用ax.set_rmin()极坐标图,负值会给你你想要的效果。

fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')

c = np.ones((50,50)) + np.arange(50).reshape(50,1)

aP = ax.pcolormesh(c)
plt.colorbar(aP)
ax.set_rmin(-10.0)
plt.show()

在此处输入图像描述

值得包含一个比例,这样您就知道您不仅仅是从图中删除数据(我认为这不是您想要的)。

附带说明一下,如果您还没有,您应该查看 [ipython notebook],您可能已经能够找到问题的解决方案,因为您可以在键入后按 Tab 键ax.,它会弹出所有的列表你可以使用的对象。由于 matplotlib 被很好地标记,set_rmin是一个相当明显的选择。

于 2013-09-19T15:16:46.870 回答