python - Python 中的 RGB 极坐标图

标签 python matplotlib rgb imshow polar-coordinates

我正在尝试在 Python 中生成 RGB 极坐标图,我期望 matplotlib.pyplot.imshow 能够做到这一点。但是,每当我尝试使用这种方法绘制数据时,我都会得到一个空白输出。

import matplotlib.pyplot as plt
import numpy as np

data = np.array([[[0,0,1],[0,1,0],[1,0,0]],[[0,0,0.5],[0,0.5,0],[0.5,0,0]]])
# Sample, any N,M,3 data should work
ax = plt.subplot(111,polar=True)
ax.imshow(data,extent=[0,2*np.pi,0,1]) # Produces a white circle

是否有使用上述方法或其他方法来完成此操作的好方法?

谢谢。


编辑:我设法通过使用 extent=[0,np.pi/2,0,1] 制作了一个象限,但它的使用对于极坐标图来说显然有问题。因为除了一个完整的象限之外,任何东西都不会产生预期的结果。

最佳答案

不幸的是,在极坐标图上使用 imshow 是不可能的,因为 imshow 网格的像素必须是二次方的。但是,您可以使用 pcolormesh 并应用一个技巧(类似于 this one ),即将颜色作为 color 参数提供给 pcolormesh,如它通常只需要二维输入。

import matplotlib.pyplot as plt
import numpy as np

data = np.array([[[0,0,1],[0,1,0],[1,0,0]],
                 [[0,0,0.5],[0,0.5,0],[0.5,0,0]]])

ax = plt.subplot(111, polar=True)

#get coordinates:
phi = np.linspace(0,2*np.pi,data.shape[1]+1)
r = np.linspace(0,1,data.shape[0]+1)
Phi,R = np.meshgrid(phi, r)
# get color
color = data.reshape((data.shape[0]*data.shape[1],data.shape[2]))

# plot colormesh with Phi, R as coordinates, 
# and some 2D array of the same shape as the image, except the last dimension
# provide colors as `color` argument
m = plt.pcolormesh(Phi,R,data[:,:,0], color=color, linewidth=0)
# This is necessary to let the `color` argument determine the color
m.set_array(None)


plt.show()

enter image description here

结果不是圆,因为你没有足够的点数。重复数据,data = np.repeat(data, 25, axis=1) 将允许得到一个圆。

enter image description here

关于python - Python 中的 RGB 极坐标图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49621655/

相关文章:

这个程序的 Python 内存模型

python - 是否可以重试一段特定的代码而不考虑异常?

python - 循环更新pyplot 3d散点图,网格线重叠点

python - 将极坐标映射到颜色(RGB 等)

image - 如何在 MATLAB 中在 RGB565 和 RGB24 图像格式之间进行转换?

java - 如何在 Java 中以彩虹顺序遍历所有 RGB 组合?

python - 返回元组列表的函数。

Python:如何防止Scipy的optimize.minimize函数改变初始猜测x0的形状?

python - 从 matplotlib 中的 CheckButtons 对象中检索选定的值

python - 有什么方法可以与谷歌协作中的 matplotlib 图形交互吗?