Python制作全球地震散点图:JSON格式( 二 )


我们依次读取每次地震震级,存在列表mags中 。为确定提取的数据是否正确,打印前10次地震的震级:
[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]
四、提取位置数据
位置数据存储在”" 键下 。在”" 键关联的字典中,有一个键"",它关联到一个列表 。而列表中的前两个值为经度和纬度 。下面演示如何提取位置数据
.py
import json# 探索数据的结构filename = 'data/eq_data_1_day_m1.json'with open(filename) as f:all_eq_data = http://www.kingceram.com/post/json.load(f)# 加载文件中的数据,将其存储到all_eq_data中,这是一个庞大的字典# readable_file = 'data/readable_eq_data.json'# 创建一个新文件,以便将这些数据以易于阅读的方式写入其中# with open(readable_file, 'w') as f:#json.dump(all_eq_data, f, indent=4)# 参数indent=4让dump()使用与数据结构匹配的缩进量来设置数据的格式all_eq_dicts = all_eq_data['features']mags, titles, lons, lats = [], [], [], []for eq_dict in all_eq_dicts:mag = eq_dict['properties']['mag']title = eq_dict['properties']['title']lon = eq_dict['geometry']['coordinates'][0]lat = eq_dict['geometry']['coordinates'][1]mags.append(mag)titles.append(title)lons.append(lon)lats.append(lat)print(mags[:10])print(titles[:2])print(lons[:5])print(lats[:5])
打印前5个经度和纬度时,输出表明提取的数据是正确的
[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]['M 1.0 - 8km NE of Aguanga, CA', 'M 1.2 - 11km NNE of North Nenana, Alaska'][-116.7941667, -148.9865, -74.2343, -161.6801, -118.5316667][33.4863333, 64.6673, -12.1025, 54.2232, 35.3098333]
五、绘制震级散点图
有了前面提取的数据,我们就可以绘制可视化图了 。首先要实现一个简单的震级散点图,在确保显示的信息无误后,我们再将注意力转向样式和外观方面 。新建一个.py文件,绘制初始散点图
.py
import plotly.express as pxfrom eq_explore_data import lons,latsfig = px.scatter(x=lons,y=lats,labels={'x': '纬度', 'y': '经度'},range_x=[-200, 200],range_y=[-90, 90],width=800,height=800,title='全球地震散点图')fig.write_html('global_earthquakes.html')fig.show()
局部效果如图所示:
接下来对这幅图做大量修改,使其更有意义
六、定制标记的尺寸
当前的散点图显示了每次地震的位置,但没有指出震级,我们要让观察者迅速获悉最严重的地震发生再什么地方,为此,根据地震的震级设置其标记的尺寸
.py
import plotly.express as pxfrom eq_explore_data import lons, lats, magsfig = px.scatter(x=lons,y=lats,labels={'x': '纬度', 'y': '经度'},range_x=[-200, 200],range_y=[-90, 90],width=800,height=800,title='全球地震散点图',size=mags,size_max=10,)fig.write_html('global_earthquakes.html')fig.show()
运行结构如图:
七、定制标记的颜色
接下来将使用.json数据文件,它包含30天内的地震数据 。
下面演示如何使用渐变来呈现地震震级、
.py
import plotly.express as pxfrom eq_explore_data import lons, lats, mags, titlesfig = px.scatter(x=lons,y=lats,labels={'x': '纬度', 'y': '经度'},range_x=[-200, 200],range_y=[-90, 90],width=800,height=800,title='全球地震散点图',size=mags,size_max=10,color=mags,hover_name=titles)fig.write_html('global_earthquakes.html')fig.show()
运行结果: