import json
#探索数据的结构
filename = 'data/1.json'
with open(filename) as f:
all_eq_data = json.load(f) #存储进去一个json数据对象
'''
readable_file = 'data/readable_eq_data.json' #创建一个文件对象
with open(readable_file,'w') as f:
json.dump(all_eq_data,f,indent = 4) #接受一个json数据对象和文件对象 indent缩进
'''
all_eq_dicts = all_eq_data['features'] #提取键"features"数据并储存
mags,titles,lons,lats= [],[],[],[]
for eq_dict in all_eq_dicts:
mag = eq_dict['properties']['mag'] #每次地震震级存储在'properties'部分的'mag'下
title = eq_dict['properties']['title'] #存储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(len(all_eq_dicts)) #提取所有地震的次数
print(titles[:2])
print(lons[:5])
print(lats[:5])
绘制震级散点图:
import plotly.express as px
fig = 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() #显示
另一种指定图标数据的方式:
import pandas as pd
data = pd.DataFrame(
data = zip(lons,lats,titles,mags),columns = ['经度','纬度','位置','震级'] #封装数据
)
data.head()
然后参数配置方式可以从:
x = lons,
y = lats,
labels = {'x':'经度','y':'纬度'},
变更为:
data,
x = '经度'
y = '纬度'
……
size = '震级',
size_max = 10, #默认20
color = '震级', #标记颜色 蓝<红<黄
hover_name = '位置', #添加鼠标指向时显示的文本