在matplotlib中的极坐标投影上设置径向偏移

时间:2013-09-19 09:33:43

标签: python numpy matplotlib

我在2D numpy数组中有一些模拟数据,大小类似于(512,768)。

该数据模拟从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()

Radial plot without offset and 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()

Radial plot without offset

使用手动轴+ 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)

enter image description here

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

1 个答案:

答案 0 :(得分: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()

enter image description here

值得包括一个比例,所以你知道你不仅仅是从图中删除数据(我认为这不是你想要的)。

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