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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
用C++封装MySQL的API的教程
May 06 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
python实现下载整个ftp目录的方法
Jan 17 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
django 解决manage.py migrate无效的问题
May 27 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
Python中常见的数据类型小结
2015/08/29 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
Django中的forms组件实例详解
2018/11/08 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
中学生打架检讨书
2014/10/13 职场文书
2015新学期家长寄语
2015/02/26 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang