我有整个天空的图像(尚未完成)。为了正确显示它,需要将其投影到椭圆上(特别是Aitoff投影)。

我已经尝试过各种版本:

plt.subplot(111, projection="aitoff")
plt.imshow(image, vmin=0.004, vmax=0.01, extent=[0,360,-90,90])
plt.show()


...并尝试将kwarg范围内的值更改为弧度,并尝试使用pcolor或pcolormesh代替imshow。

这些给了我:一个空的Aitoff图,各种Aitoff图,其中全部或部分图像位于其中,但没有填充它,或者一个Aitoff图,其图像的一小部分(从外观看一个或两个像素) )完全填充。

My whole image sitting within a plot

The unprojected image

当我使用大学拥有的计算机时,我也无法访问Basemap或astroproj之类的东西。

编辑:正如另一个用户指出的,上面的示例不是最小,完整和可验证的。下面是一个应为的版本:

A=np.random.rand(180,360)
plt.imshow(A)
plt.show()

plt.subplot(111, projection="aitoff")
plt.pcolormesh(A)
plt.show()


我希望将plt.imshow()命令中生成的整个图像投影到Aitoff图中。相反,只有几个像素。有任何想法吗?

谢谢!

最佳答案

在非直线投影中使用imshow通常会失败。但是可以使用pcolormesh

aitoff投影在水平方向上从-π到π,在垂直方向上从-π/ 2到π/ 2。这是绘制pcolormesh图时要使用的值的范围。

import numpy as np
import matplotlib.pyplot as plt

im = plt.imread("house.jpg")
x = np.linspace(-np.pi,np.pi,im.shape[1])
y = np.linspace(-np.pi/2,np.pi/2,im.shape[0])
X,Y = np.meshgrid(x,y)

plt.subplot(111, projection="aitoff")
plt.pcolormesh(X,Y[::-1],im[:,:,2])
plt.show()


python - 项目numpy数组到aitoff投影-LMLPHP

关于python - 项目numpy数组到aitoff投影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49197997/

10-11 04:18