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

效果如下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python地震数据可视化详解

    本文实例为大家分享了python地震数据可视化的具体代码,供大家参考,具体内容如下 参考源码:seisplot 准备工作: 在windows10下安装python3.7,下载参考源码到本地. 1. demo绘图测试 demo绘图指令 cmd> python seisplot.py --demo 问题1)缺少依赖包 File "D:/Desktop/python可视化/seisplot/seisplot.py", line 16, in <module> import

  • 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 = ['北京',

  • Python绘制简单散点图的方法

    散点图,顾名思义是一些散乱的点构成的图.那么这些散乱的点有什么作用呢?散点图通过用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式. 绘制方法大体上与折线图一致,只是对点不需要去拟合折线,使用plt.scatter()函数替代plt.plot()即可.例如绘制三月份与十一月份的气温散点图,代码如下: '''     绘制散点图,要点:plt.scatter(x,y) ''' # 导入模块 from matplotlib import pyplot a

  • Python数据可视化制作全球地震散点图

    目录 查看JSON数据 参数indent 创建地震列表 提取震级 提取位置数据 绘制震级散点图 指定图表数据的方式 DataFrame()函数 设计标记点的尺寸 设计标记的颜色 前言: 为了制作全球地震散点图,我在网上下载了一个数据集,其中记录了一个月内全球发生的所有地震,但这些数据是以JSON格式存储的,因此需要用json模块来进行处理. 查看JSON数据 首先我们先打开下载好的数据集浏览一下: 你会发现其中的数据密密麻麻,根本不是人读的,因此,接下来我们将对数据进行处理,让它变得简单易读.

  • Python使用Matplotlib绘制三维散点图详解流程

    什么是Matplotlib? Matplotlib是Python中的一个库,用于创建静态和动态动画,并使用其内置函数绘制.它有很多内置特性和内置分析工具,用于分析任何图形或图表. 如果我们想绘制任何三维图形,那么我们可以使用Matplotlib库.当我们有一个巨大的三维变量数据集,我们绘制它的图形时,它看起来非常分散,这被称为3D散点图.我们将使用Matplotlib的matplot3d工具包绘制三维图形. 有一把斧头.函数,它接受坐标X.Y和Z的数据集. 根据我们想要赋予三维图的属性,需要更多

  • matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatterplot in 3D. ''' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax): ''' Helper f

  • python+matplotlib绘制饼图散点图实例代码

    本文是从matplotlib官网上摘录下来的一个实例,实现的功能是Python+matplotlib绘制自定义饼图作为散点图的标记,具体如下. 首先看下演示效果 实例代码: import numpy as np import matplotlib.pyplot as plt # first define the ratios r1 = 0.2 # 20% r2 = r1 + 0.4 # 40% # define some sizes of the scatter marker sizes = n

  • python绘制散点图并标记序号的方法

    实现二维平面上散点的绘制,并可以给每个散点标记序号或者名称: import numpy as np import matplotlib.pyplot as plt x=[2.3,4.5,3,7,6.5,4,5.3] y=[5,4,7,5,5.3,5.5,6.2] n=np.arange(7) fig,ax=plt.subplots() ax.scatter(x,y,c='r') for i,txt in enumerate(n): ax.annotate(txt,(x[i],y[i])) 以上这

  • Python matplotlib实现散点图的绘制

    目录 一.整理数据 二.修改点的样式 三.呈现半透明的状态 四.点呈现多彩的颜色 五.让点的大小不一 六.侧边呈现颜色卡 七.改变集中性 一.整理数据 import pandas as pd cnbodf=pd.read_excel('cnboo1.xlsx') cnbodfsort=cnbodf.sort_values(by=['BO'],ascending=False) def mkpoints(x,y): return len(str(x))*(y/25)-3 cnbodfsort['po

  • Python绘制散点图的教程详解

    少废话,直接上代码 import matplotlib.pyplot as plt import numpy as np # 1. 首先是导入包,创建数据 n = 10 x = np.random.rand(n) * 2# 随机产生10个0~2之间的x坐标 y = np.random.rand(n) * 2# 随机产生10个0~2之间的y坐标 # 2.创建一张figure fig = plt.figure(1) # 3. 设置颜色 color 值[可选参数,即可填可不填],方式有几种 # col

  • python绘制散点图和折线图的方法

    本文实例为大家分享了python绘制散点图和折线图的具体代码,供大家参考,具体内容如下 #散点图,一般和相关分析.回归分析结合使用 import pandas import matplotlib import matplotlib.pyplot as plt   plot_circle=pandas.read_csv('D://Python projects//reference data//6.1//data.csv') #定义主题颜色 maincolor=(47/256,82/256,141

随机推荐