使用投影

时间:2018-05-25 14:03:03

标签: python-2.7 matplotlib map-projections shading

我正在制作天空地图,我想根据特定的赤纬(纬度)遮挡部分天空地图。我尝试了许多不同的预测,如Mollweide,Lambert和Aitoff。我也尝试过fill_between和add_patch。阴影将永远不会在约-77.5度的角度下对南极进行着色。

问题出现在Python 2.7中。以下是我到目前为止:

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import ascii
from astropy import units as u
from astropy.coordinates import SkyCoord
from matplotlib.patches import Circle,Polygon

#Plotting: 2D projection of sky.
fig=plt.figure(figsize=(19,12))
ax = fig.add_subplot(111, projection="aitoff")
ax.grid(True)
ax.set_ylabel(r'latitude b ($\degree$)')
ax.set_xlabel (r'longitude l ($\degree$)')

ra_min = -180.
ra_max = 180.
dec_min = -20.
dec_max = 90
ra_range = np.linspace(ra_min, ra_max, 1000)
dec_range=np.linspace(dec_min, dec_max, 1000)
coordsG=SkyCoord(ra_range, dec_min, frame='icrs', unit='deg').galactic
coordinates = np.deg2rad((coordsG.l.wrap_at(180 * u.deg).degree,coordsG.b.wrap_at(180 * u.deg).degree))


#Patch, use Polygon or Circle.
circle = Polygon(coordinates.transpose())
ax.add_patch(circle)

#Plot contour of shape I want to shade:
plt.plot(coordinates[0], coordinates[1], color='r', marker='.', ls='none')

#Use fill_between
plt.fill_between(coordinates[0],coordinates[1], facecolor='k',alpha=0.8)
plt.savefig('PLOT.png')

我想遮住红色斑点的内部。 请注意,南极没有正确遮挡,外面有一块额外的阴影。尝试使用Lambert投影更容易看到问题。

1 个答案:

答案 0 :(得分:0)

其实我已经弄明白了。如果我们将曲线分成2然后相对于北极变暗,则Fill_between有效。