我刚刚开始尝试使用healpy,我无法弄清楚如何使subplots包含我的地图。我有一个行星的热辐射图作为时间的函数,我需要在几个时刻(可以说9个不同的时间)看到它并叠加一些坐标,以检查我的星球是否正确旋转。Healpy plotting:如何使用healpy.mollview投影来绘制子图的图形?
到目前为止,我可以做2件事。
- 制作9种不同的数字与叠加坐标。
- 制作一个包含9个不同地图的9个子图的图形,但将所有坐标叠加在我的所有子图上,而不仅仅是适合时间的坐标。
我不确定这是一个非常简单的问题,但它一直让我疯狂,我无法找到任何有效的工具。
我会告诉你我是什么意思:
选项1:
import healpy as hp
import matplolib.pyplot as plt
MAX = 10**(23)
MIN = 10**10
for i in range(9):
t = 4000+10*i
hp.visufunc.mollview(Fmap_wvpix[t,:],
title = "Map at t="+str(t), min = MIN, max=MAX))
hp.visufunc.projplot(d[t,np.where(np.abs(d[t,:,2]-SSP[t])<0.5),1 ],
d[t,np.where(np.abs(d[t,:,2]-SSP[t])<0.5),2],
'k*',markersize = 6)
hp.visufunc.projplot(d[t,np.where(np.abs(d[t,:,2]-(SOP[t]))<0.2),1 ],
d[t,np.where(np.abs(d[t,:,2]-(SOP[t]))<0.2),2],
'r*',markersize = 6)
这使得9个的数字,看起来非常像这样:
Flux map superimposed with some stars at time = t
但我需要他们中的很多人,所以我想制作一张图像,其中包含9个看起来像图像的子图。
选项2:
fig = plt.figure(figsize = (10,8))
for i in range(9):
t = 4000+10*i
hp.visufunc.mollview(Fmap_wvpix[t,:],
title = "Map at t="+str(t), min = MIN, max=MAX,
sub = int('33'+str(i+1)))
hp.visufunc.projplot(d[t,np.where(np.abs(d[t,:,2]-SSP[t])<0.5),1 ],
d[t,np.where(np.abs(d[t,:,2]-SSP[t])<0.5),2],
'k*',markersize = 6)
hp.visufunc.projplot(d[t,np.where(np.abs(d[t,:,2]-(SOP[t]))<0.2),1 ],
d[t,np.where(np.abs(d[t,:,2]-(SOP[t]))<0.2),2],
'r*',markersize = 6)
这给我的次要情节,但它利用了我所有的次要情节的所有projplot星! (见下图)
我知道,我需要一种方法来调用具有时间轴= T映象并绘制星,时间合适的地图上= T,但是我什么都至今尝试失败。我主要试图使用projaxes思考我可以定义一个matplotlib轴,并绘制星星,但它不工作。有什么建议?
另外,我想提醒我的地图部分线路很好,但我无法弄清楚如何做到这一点无论是。该文件说projplot但它不会画任何,如果我不告诉它我想要一个标记。
PS:此代码可能是没用的,你,如果你没有我的阵列,它不会工作。这是一个更简单的版本,应该运行:
import numpy as np
import healpy as hp
import matplotlib.pyplot as plt
NSIDE = 8
m = np.arange(hp.nside2npix(NSIDE))*1
MAX = 900
MIN = 0
fig = plt.figure(figsize = (10,8))
for i in range(9):
t = 4000+10*i
hp.visufunc.mollview(m+100*i, title = "Map at t="+str(t), min = MIN, max=MAX,
sub = int('33'+str(i+1)))
hp.visufunc.projplot(1.5,0+30*i, 'k*',markersize = 16)
所以这应该给我一个星星为每个帧和明星应该是移动。但是,它正在绘制所有框架上的所有星星。
我该怎么办?我不明白这些文件。