python绘制地震散点图


Posted in Python onJune 18, 2019

本项目是利用五年左右的世界地震数据,通过python的pandas库、matplotlib库、basemap库等进行数据可视化,绘制出地震散点图。主要代码如下所示

from __future__ import division
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
from matplotlib.patches import Polygon
 
chi_provinces = ['北京','天津','上海','重庆',
     '河北','山西','辽宁','吉林',
     '黑龙江','江苏','浙江','安徽',
     '福建','江西','山东','河南',
     '湖北','湖南','广东','海南',
     '四川','贵州','云南','陕西',
     '甘肃','青海','台湾','内蒙古',
     '广西','西藏','宁夏','新疆',
     '香港','澳门'] #list of chinese provinces
 
 
def is_in_china(str):
 if str[:2] in chi_provinces:
  return True
 else:
  return False
 
def convert_data_2014(x):
 try:
  return float(x.strip())
 except ValueError:
  return x
 except AttributeError:
  return x
 
def format_lat_lon(x):
 try:
  return x/100
 except(TypeError):
  return np.nan
 
df = pd.read_excel(r'C:/Users/GGWS/Desktop/shuju/201601-12.xls')
df = df.append(pd.read_excel(r'C:/Users/GGWS/Desktop/shuju/201201-12.xls'),ignore_index = True)
df = df.append(pd.read_excel(r'C:/Users/GGWS/Desktop/shuju/shuju.xls'),ignore_index = True)
df = df.append(pd.read_excel(r'C:/Users/GGWS/Desktop/shuju/201501-12.xls'),ignore_index = True)
df_2014 = pd.read_excel(r'C:/Users/GGWS/Desktop/shuju/201401-12.xls') #have to introduce statics of 2014 independently because the format and the type of data of specific column in this data set are different from others
df['longitude'] = df['longitude'].apply(convert_data_2014)
df['latitude'] = df['latitude'].apply(convert_data_2014)
 
df_2014['longitude'] = df_2014['longitude'].apply(convert_data_2014)
df_2014['latitude'] = df_2014['latitude'].apply(convert_data_2014)
df = df.append(df_2014,ignore_index = True)
 
df = df[['latitude','longitude','magnitude','referenced place','time']] #only save four columns as valuable statics
 
df[['longitude','latitude']] = df[['longitude','latitude']].applymap(format_lat_lon) #use function "applymap" to convert the format of the longitude and latitude statics
df = df.dropna(axis=0,how='any') #drop all rows that have any NaN values
format_magnitude = lambda x: float(str(x).strip('ML'))
df['magnitude'] = df['magnitude'].apply(format_magnitude)
#df = df[df['referenced place'].apply(is_in_china)]
 
lon_mean = (df['longitude'].groupby(df['referenced place'])).mean()
lat_mean = (df['latitude'].groupby(df['referenced place'])).mean()
group_counts = (df['magnitude'].groupby(df['referenced place'])).count() 
after_agg_data = pd.concat([lon_mean,lat_mean,group_counts], axis = 1 )
after_agg_data.rename(columns = {'magnitude':'counts'} , inplace = True)
 #aggregate after grouping the data
 
after_sorted_data = after_agg_data.sort_values(by = 'counts',ascending = False)
new_index = np.arange(len(after_sorted_data.index))
after_sorted_data.index = new_index
paint_data = after_sorted_data[after_sorted_data['counts']>=after_sorted_data['counts'][80]]
 
 
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
 
plt.figure(figsize=(16,8))
m = Basemap()
m.readshapefile(r'C:/Users/GGWS/Desktop/jb/gadm36_CHN_1', 'states', drawbounds=True)
ax = plt.gca()
'''
for nshape,seg in enumerate (m.states):
 poly = Polygon(seg,facecolor = 'r')
 ax.add_patch(poly)
'''
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.5)
m.shadedrelief()
 
 
for indexs in df.index:
  lon2,lat2 = df.loc[indexs].values[1],df.loc[indexs].values[0]
  x,y = m(lon2,lat2)
  m.plot(x,y,'ro',markersize = 0.5)      #获取经度值
'''
for indexs in after_sorted_data.index[:80]:
 lon,lat = after_sorted_data.loc[indexs].values[0],after_sorted_data.loc[indexs].values[1]
 x,y = m(lon,lat)
 m.plot(x,y,'wo',markersize = 10*(after_sorted_data.loc[indexs].values[2]/after_sorted_data.loc[0].values[2]))
'''
plt.title("Worldwide Earthquake") 
plt.show() 
 
#indexs-len(df.index)+80

效果如下

python绘制地震散点图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络爬虫采集联想词示例
Feb 11 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
python模块之re正则表达式详解
Feb 03 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python得到windows自启动列表的方法
Oct 14 Python
python重试装饰器的简单实现方法
Jan 31 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Python with语句用法原理详解
Jul 03 Python
python f-string式格式化听语音流程讲解
Jun 18 #Python
python实现雪花飘落效果实例讲解
Jun 18 #Python
python地震数据可视化详解
Jun 18 #Python
Python实现FM算法解析
Jun 18 #Python
python pygame实现五子棋小游戏
Oct 26 #Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 #Python
python制作简单五子棋游戏
Jun 18 #Python
You might like
PHP简单获取视频预览图的方法
2015/03/12 PHP
php数组随机排序实现方法
2015/06/13 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php实现登陆模块功能示例
2016/10/20 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
jQuery使用手册之一
2007/03/24 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
常见python正则用法的简单实例
2016/06/21 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
python3.7添加dlib模块的方法
2020/07/01 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
司机的工作范围及职责
2013/11/13 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
学生上课说话检讨书
2014/10/25 职场文书
《鲸》教学反思
2016/02/23 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android