asi*_*eau 2 python rgb matplotlib polar-coordinates imshow
我正在尝试用 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
Run Code Online (Sandbox Code Playgroud)
有没有使用上述方法或其他方法来完成此任务的好方法?
谢谢。
编辑:我设法通过使用创建了一个象限,extent=[0,np.pi/2,0,1]但它的使用显然对极坐标图有问题。因为除了完整的象限之外的任何东西都不会产生预期的结果。
不幸的是,在极坐标图上使用imshow是不可能的,因为 imshow 网格的像素必然是二次的。但是,您可以使用pcolormesh并应用一种技巧(类似于此技巧),即提供颜色作为 的color参数pcolormesh,因为它通常只需要 2D 输入。
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()
Run Code Online (Sandbox Code Playgroud)
结果不是圆,因为你没有足够的点。重复数据,data = np.repeat(data, 25, axis=1)就可以得到一个圆。
| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |