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使用psutil模块获取系统状态
Aug 27 Python
python实现k-means聚类算法
Feb 23 Python
用python处理图片实现图像中的像素访问
May 04 Python
Python3处理HTTP请求的实例
May 10 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
PyQt5显示GIF图片的方法
Jun 17 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python爬取数据并实现可视化代码解析
Aug 12 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://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP attributes()函数讲解
2019/02/03 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python格式化字符串实例总结
2014/09/28 Python
python利用datetime模块计算时间差
2015/08/04 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
pytorch 预训练层的使用方法
2019/08/20 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
职业生涯规划书前言
2014/04/15 职场文书
家长评语怎么写
2014/12/30 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
春季运动会加油词
2015/07/18 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技