极坐标pcolormesh图显示偏移量(如何在极坐标图的不同半球中显示两个数组?)

时间:2019-06-18 23:26:36

标签: python matplotlib polar-coordinates

如何(在python中)准确且灵活地显示极坐标图不同半球中的两个阵列?

我想绘制一个数组,使其一半出现在极坐标图的顶部半球,而另一半出现在底部。 (我将数组分成两半,以便可以使用两种不同的颜色图:只要保留了该功能,就可以采用不同的方式进行操作。)我目前使用pcolormesh显示数组,但似乎无法定义网格正确地避免在绘图中出现偏移。下面是一个包含模拟数据的简单示例。我希望此示例显示从图的顶部到底部的一条直线-红色在顶部,蓝色在底部,中间没有间隙。

# make test data: should appear as a straight line down the center
Rtest = np.zeros((39, 165), np.float_)
Rtest[:, 82] = 1.
Itest = np.ones(39)

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

# plot one half on the bottom
nv1, nthets1 = Rtest[:20, :].shape
r1 = np.linspace(0, nv1, nv1) 
t1 = np.linspace(np.pi, np.pi*2, nthets1+1, endpoint=True)
R1, T1  = np.meshgrid(r1, t1)
ax.pcolormesh(T1, R1, Rtest[:20, :].T, cmap='Blues')

# plot the other half on top
nv2, nthets2 = Rtest[20:, :].shape
r2 = np.linspace(0, nv2, nv2)
t2 = np.linspace(0, np.pi, nthets2, endpoint=False)
R2,T2  = np.meshgrid(r2, t2)
ax.pcolormesh(T2, R2, Rtest[20:, :].T, cmap='Reds')#, **newallkwargs)

ax.plot(0, 0, '.')

相反,将显示以下内容。 (我还在(0,0)处绘制了一个点,以强调我所看到的偏移。)我想避免在中心出现一个径向间隙,以及之间的theta偏移似乎是两半。

模拟数据反映了一般情况:数组长度可以是奇数,因此数组不能被切成两半。在那种情况下,我希望较短的那半部分不径向延伸到另一半(就像下面的红色半圆所示)。

What is displayed by the MWE.

非常感谢关于极地pcolormesh图或如何实现所需效果的任何指针。

1 个答案:

答案 0 :(得分:1)

“线”似乎被剪切,因为图像的分辨率不够高。 pcolor图像的一个像素比png图像的一个像素小得多。这是对数据进行下采样的常见问题,并且对此没有任何规范的解决方案,当然要避免过度下采样。

在这种情况下,plt.figure(dpi=100)的dpi已经足以显示该行,df.iterrows()

enter image description here