python绘制地震散点图
作者:ichigoooooo 发布时间:2021-12-21 13:09:08
标签:python,地震,散点图
本项目是利用五年左右的世界地震数据,通过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
效果如下
来源:https://blog.csdn.net/qq_36228216/article/details/86680246
0
投稿
猜你喜欢
- 导语哈喽哈喽!大家好!我是木木子,又到了每日游戏更新环节!8月30日,对暑假还意犹未尽的孩子们收到了一份“开学大礼”:通知要求,严格限制向未
- Python使用QRCode模块生成二维码QRCode官网https://pypi.python.org/pypi/qrcode/5.1简介
- # encoding:utf-8import re # 使用正则 匹配想要的数据import requests # 使用requests得到
- <?php function BigEndian2Int($byte_word, $signed = false) { $int_va
- 1、确认框架中安装了第三方alibabacoud控件实现代码如下上传过程中遇到任务问题,可以进行留言<?php namespace A
- innerHTML,outerHTML innerHTML检索或设置标签内的内容;outerHTML检索或设置整个标签的内容(包含标签)。&
- 程序设计中我们时常需要检测用户输入是否正确,特别是姓名,地址等等是不是输入的汉字。那么,如何判断一个字符是不是汉字呢?其实在asp中至少有两
- 在对二维数据进行 resize / mapping / 坐标转换等操作时,经常会将原本的整数坐标变换为小数坐标,对于非整数的坐标值一种直观有
- 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际
- 孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslog
- 本文将详细介绍一下如何搭建深度学习所需要的实验环境.这个框架分为以下六个模块显卡简单理解这个就是我们常说的GPU,显卡的功能是一个专门做矩阵
- python代码如下:import webbrowser as wbimport foliumif __name__ == '__m
- 最近被“模块化”缠身,又是文章又是PPT的,被逼着想了很多相关的东西。整理下我这段时间对于“模块化”的思考,大多都是我自己从事页面重构这份工
- 关于asp随机数的相关文章:asp生成一个不重复的随机数字 8个asp生成随机字符的函数 <html> <me
- 讨论Web开发技术的历史,当然要先说说Web的起源。众所周知,Web这个Internet上最热门的应用架构是由Tim Berners-Lee
- 在使用matplotlib画图时,少不了对性能图形做出一些说明和补充。一般情况下,loc属性设置为'best'就足够应付了p
- numpy norm()函数求范数函数:norm(x, ord = None, axis = None, keepdims = False)
- 今天在修改 淘宝 宝贝详情页面的时候,发现页面在 Firefox 下遇到这样一个问题:链接用图片做背景,text-indent:-9999p
- 方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数
- Python 读取 .gz 文件读取.gz 文件需要使用gzip 包,如果没有安装可以自行在终端安装pip install gzipimpo