from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
from openpyxl import load_workbook
from matplotlib.collections import LineCollection
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
wb = load_workbook("Turkey_EA1977-2023_events.xlsx") # Work Book
ws = wb.get_sheet_by_name('Turkey_EA1977-2023_events') # Work Sheet
def get_marker_color(magnitude):
# Returns green for small earthquakes, yellow for moderate
# earthquakes, and red for significant earthquakes.
if magnitude < 5:
return ('darkblue')
elif magnitude < 12.5:
return ('b')
elif magnitude < 15:
return ('royalblue')
elif magnitude < 17.5:
return ('deepskyblue')
elif magnitude < 20:
return ('cyan')
elif magnitude < 22.5:
return ('springgreen')
elif magnitude < 25:
return ('chartreuse')
elif magnitude < 27.5:
return ('yellowgreen')
elif magnitude < 30:
return ('goldenrod')
elif magnitude < 35:
return ('orange')
elif magnitude < 37.5:
return ('r')
else:
return ('darkred')
# make sure the value of resolution is a lowercase L,
# for 'low', not a numeral 1
eq_map = Basemap(projection='merc', lat_0=40, lon_0=38.5,
resolution = 'h', area_thresh = 0.1,
llcrnrlon=34, llcrnrlat=35,
urcrnrlon=47, urcrnrlat=41)
eq_map.drawcoastlines()
eq_map.drawcountries()
eq_map.fillcontinents(color='lightgrey')
eq_map.drawmapboundary()
eq_map.drawmeridians(np.arange(34, 47, 3),labels=[True,False,False,True])
eq_map.drawparallels(np.arange(35, 42, 1.5),labels=[True,False,False,True])
lons = []
lats = []
mag = []
dep = []
for i in range(2,260):
lons.append(float(ws.cell(row=i, column=4).value))
lats.append(float(ws.cell(row=i, column=3).value))
mag.append(float(ws.cell(row=i, column=5).value))
dep.append(float(ws.cell(row=i, column=6).value))
min_marker_size =2.5
for lon, lat, mag, dep in zip(lons, lats, mag, dep):
x,y = eq_map(lon, lat)
msize = mag ** min_marker_size
marker_string = get_marker_color(dep)
eq_map.scatter(x, y, marker='o', s=msize, c=dep, cmap='jet', vmin=10, vmax=50, alpha=0.75, edgecolor='black', linewidth=1)
'''
for i in range(33,43):
lon=ws.cell(row=i, column=4).value
lat=ws.cell(row=i, column=3).value
my_map.plot(lon, lat, 'bo', markersize=12)
print(lon, lat)
'''
cb = plt.colorbar(shrink=0.65)
cb.set_label('depth/km')
lon1=38
lat1=35.5
s1=4 ** min_marker_size
x1,y1 = eq_map(lon1, lat1)
lon2=38
lat2=35.5
s2=5 ** min_marker_size
x2,y2 = eq_map(lon2, lat2)
lon3=38
lat3=35.5
s3=6 ** min_marker_size
x3,y3 = eq_map(lon3, lat3)
lon4=38
lat4=35.5
s4=7 ** min_marker_size
x4,y4 = eq_map(lon4, lat4)
lon5=38
lat5=35.5
s5=8 ** min_marker_size
x5,y5 = eq_map(lon5, lat5)
p1 = eq_map.scatter(x=x1,y=y1,s=s1, c='lightgrey')
p2 = eq_map.scatter(x=x2,y=y2,s=s2, c='lightgrey')
p3 = eq_map.scatter(x=x3,y=y3,s=s3, c='lightgrey')
p4 = eq_map.scatter(x=x4,y=y4,s=s4, c='lightgrey')
p5 = eq_map.scatter(x=x5,y=y5,s=s5, c='lightgrey')
plt.legend([p1,p2,p3,p4,p5], ['4.0', '5.0', '6.0', '7.0', '8.0'],title = "Mw", loc='center left', bbox_to_anchor=(-0.05, 1.2),ncol=5)
plt.rcParams['figure.dpi'] = 900
#plt.legend(loc='lower left', shadow=True)
#handles, labels = scatter.legend_elements(prop="sizes", num=4, alpha=0.6)
plt.rcParams["font.family"] = "Times New Roman"
#print(plt.rcParams)
plt.show()
使用上述代码进行画图,明明把字体改成了Times New Roman 为什么运行出来的图字体没有变?