Polar pcolormesh plot shows offset(如何在极坐标图的不同半球显示两个数组?)
Polar pcolormesh plot shows offset (how to display two arrays in different hemispheres of a polar plot?)
如何(在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 之间的偏移量两半。
模拟数据反映了一般情况:数组长度可以是奇数,这样数组就不能被分成两个偶数的一半。在那种情况下,我希望较短的一半不会像另一半那样径向延伸(就像下面的红色半圆中发生的那样)。
非常感谢任何关于极坐标 pcolormesh 图或如何达到预期效果的指示。
"line"好像剪了,因为图片分辨率不够高。 pcolor 图像的一个像素比 png 图像中的一个像素小得多。这是下采样数据的常见问题,并且没有任何规范的解决方案,当然除了不要下采样太多。
在这种情况下,100 的 dpi 已经足以显示线条,plt.figure(dpi=100)
如何(在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 之间的偏移量两半。
模拟数据反映了一般情况:数组长度可以是奇数,这样数组就不能被分成两个偶数的一半。在那种情况下,我希望较短的一半不会像另一半那样径向延伸(就像下面的红色半圆中发生的那样)。
非常感谢任何关于极坐标 pcolormesh 图或如何达到预期效果的指示。
"line"好像剪了,因为图片分辨率不够高。 pcolor 图像的一个像素比 png 图像中的一个像素小得多。这是下采样数据的常见问题,并且没有任何规范的解决方案,当然除了不要下采样太多。
在这种情况下,100 的 dpi 已经足以显示线条,plt.figure(dpi=100)