私の問題hereと非常によく似た問題がありますが、このページで推奨されている解決策は私の場合には機能しません。射影 'cyl' の場合、ビーチ ボールがプロットされます。この投影法を「ロビン」 (ロビンソン) に変更すると、データなしで投影法 (ビーチ ボール) が作成されます。他の同様の問題に対する推奨事項は、次を使用することでした。
x,y = map(lat, lon)
座標を適切な投影に変換するために、これも私のコードに含まれています(以下を参照):
m = Basemap(projection='cyl', lon_0=0, resolution='c')
m.drawmapboundary(fill_color='cornflowerblue')
m.drawcountries()
m.fillcontinents(color='white',lake_color='cornflowerblue',
zorder=0)
m.drawcoastlines()
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,420.,60.))
lats = [38.3215, -55.285, -56.241, -60.274]
lons = [142.36929, -31.877, -26.935, -46.401]
x, y = m(lons, lats)
focmecs = [[193, 9, 78], [301, 62, 84], [101, 69, -56], [190, 89, -140]]
eq_mw = [9.0, 7.4, 7.2, 7.7]
ax = plt.gca()
for i in range(len(focmecs)):
# Loop to set the tensor (beach ball) colors
eq = eq_mw[i]
if eq < 6:
beachball_color = 'y'
elif 6 <= eq < 8:
beachball_color = 'orange'
elif 8 <= eq:
beachball_color = 'r'
b = beach(focmecs[i], facecolor=beachball_color, xy=(x[i], y[i]), width=10, linewidth=1, alpha=0.85)
b.set_zorder(10)
ax.add_collection(b)