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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
python批量同步web服务器代码核心程序
Sep 01 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
Windows 7下Python Web环境搭建图文教程
Mar 20 Python
Python实现查看系统启动项功能示例
May 10 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
Python restful框架接口开发实现
Apr 13 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 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/02/09 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
Python实现list反转实例汇总
2014/11/11 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
django输出html内容的实例
2018/05/27 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
pytorch打印网络结构的实例
2019/08/19 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers