readshapefile меняет цвет фона
Метод readshapefile был использован и, кажется, работает нормально:
m = Basemap(projection='robin', lon_0=0, resolution='c')
m.drawmapboundary(fill_color='cornflowerblue')
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.))
m.readshapefile(r'~/Desktop/ONGOING_PROJEKTS/MISC/PB2/PB2002_plates', name='PB2002_plates', drawbounds=True, color='orange')
#m.bluemarble()
lats = [38.3215, -55.285, -60.274]
lons = [142.36929, -31.877, -46.401]
x, y = m(lons, lats)
focmecs = [[193, 9, 78], [301, 62, 84], [190, 89, -140]]
eq_mw = [9.0, 7.4, 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=1000000, linewidth=1, alpha=0.85)
b.set_zorder(10)
ax.add_collection(b)
Однако для другой проекции карты, для другой области (локальной, а не глобальной), цвет фона карты изменяется:
m = Basemap(llcrnrlon=west, llcrnrlat=south, urcrnrlon=east, urcrnrlat=north, resolution='h', area_thresh = 0.1, projection='tmerc', lat_ts=0, lon_0=center[0], lat_0=center[1])
# Plot features
m.drawcoastlines()
m.drawcountries()
m.drawstates(color='w')
m.drawrivers(color='lightblue')
m.shadedrelief()
m.drawparallels(np.arange(-81., 81., 2),labels=[1,0,0,0], linewidth=0.0) #-81., 81., 4
m.drawmeridians(np.arange(-180., 181., 4),labels=[0,0,0,1], linewidth=0.0) #-180., 181., 10
m.readshapefile(r'~/Desktop/ONGOING_PROJEKTS/MISC/PB2/PB2002_plates', name='PB2002_plates', drawbounds=True, color='orange')
m.drawmapscale(146.3, 33.2, 145, 40, 500, barstyle='fancy')
Неясно, почему, но эта оранжевая граница, кажется, сохраняется с кодом для второго графика, но не для первого. Кто-нибудь знает почему?
1 ответ
Я понял. Вместо:
m.readshapefile(r'~/Desktop/ONGOING_PROJEKTS/MISC/PB2/PB2002_plates', name='PB2002_plates', drawbounds=True, color='orange')
изменить на drawbounds=False
Установив значение false, вы все равно сможете нарисовать локальные границы.