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函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Python面向对象之Web静态服务器
Sep 03 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
Python实现的ini文件操作类分享
2014/11/20 Python
Python中super关键字用法实例分析
2015/05/28 Python
python字符串对其居中显示的方法
2015/07/11 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
python使用turtle绘制分形树
2018/06/22 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
python如何导入依赖包
2020/07/13 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
故宫的导游词
2015/01/31 职场文书