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多进程操作实例
Nov 21 Python
Python设置默认编码为utf8的方法
Jul 01 Python
python中abs&map&reduce简介
Feb 20 Python
Anaconda入门使用总结
Apr 05 Python
Python做智能家居温湿度报警系统
Sep 25 Python
python实现汉诺塔算法
Mar 01 Python
浅析python参数的知识点
Dec 10 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
python如何读取.mtx文件
Apr 22 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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/08/08 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python缩进区别分析
2014/02/15 Python
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
Python调用C++程序的方法详解
2017/01/24 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python的继承知识点总结
2018/12/10 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
英国复古服装购物网站:Collectif
2019/10/30 全球购物
医学院学生求职简历的自我评价
2013/10/24 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
五一劳动节慰问信
2015/02/14 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
公司费用报销管理制度
2015/08/04 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python