我想在basemap画出的地图上添加震源机制沙滩球
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from obspy import read_events
from obspy.imaging.beachball import beach
from openpyxl import load_workbook
wb = load_workbook("fm.xlsx") # Work Book
ws = wb.get_sheet_by_name('sheet1') # Work Sheet
eq_map = Basemap(projection='merc', lat_0=40, lon_0=38,
resolution = 'h', area_thresh = 0.1,
llcrnrlon=35, llcrnrlat=39,
urcrnrlon=41, urcrnrlat=41)
eq_map.drawcoastlines()
eq_map.drawcountries()
eq_map.fillcontinents(color='lightgrey')
eq_map.drawmapboundary()
eq_map.drawmeridians(np.arange(35, 41, 1),labels=[True,False,False,True])
eq_map.drawparallels(np.arange(39, 41, 1),labels=[True,False,False,True])
m11=[]
m22=[]
m33=[]
m12=[]
m13=[]
m23=[]
lons=[]
lats=[]
for i in range(2,10):
m11.append(float(ws.cell(row=i, column=3).value))
m22.append(float(ws.cell(row=i, column=6).value))
m33.append(float(ws.cell(row=i, column=8).value))
m12.append(float(ws.cell(row=i, column=4).value))
m13.append(float(ws.cell(row=i, column=5).value))
m23.append(float(ws.cell(row=i, column=7).value))
lons.append(float(ws.cell(row=i, column=2).value))
lats.append(float(ws.cell(row=i, column=1).value))
moment_list = [m11,m22,m33,m12,m13,m23]
ax = plt.gca()
b = beach(moment_list, xy=(lons, lats), width=20, linewidth=1, alpha=0.85)
b.set_zorder(10)
ax.add_collection(b)
plt.show()
但是运行错误
请问是什么原因?