Python可视化分析全球火山分布

 更新时间:2022年01月20日 08:52:23   作者:老贡讲Python  
也就在前几天,南太平洋岛国汤加发生火山喷发。所以今天小编将为大家介绍如何用Python当中的folium模块以及其他的可视化库来对全球的火山情况做一个分析。需要的可以参考一下

也就在前几天,南太平洋岛国汤加发生火山喷发,有专门的专家学者分析,这可能是30年来全球规模最大的一次海底火山喷发,它引发的海啸以及火山灰将对周边的大气、洋流、淡水、农业以及民众健康等都造成不同程度的影响。

今天小编就用Python当中的folium模块以及其他的可视化库来对全球的火山情况做一个分析。

准备工作

和以往一样,我们先导入需要数据分析过程当中需要用到的模块并且读取数据集,本次的数据集来自由kaggle网站,主要由美国著名的史密森学会整理所得

import pandas as pd
import folium.plugins as plugins
import folium
 
df_volcano = pd.read_csv("volcano.csv")
df_volcano.head()

output

数据集包含了这些个数据

df_volcano.columns

output

Index(['volcano_number', 'volcano_name', 'primary_volcano_type',
       'last_eruption_year', 'country', 'region', 'subregion', 'latitude',
       'longitude', 'elevation', 'tectonic_settings', 'evidence_category',
       'major_rock_1', 'major_rock_2', 'major_rock_3', 'major_rock_4',
       'major_rock_5', 'minor_rock_1', 'minor_rock_2', 'minor_rock_3',
       'minor_rock_4', 'minor_rock_5', 'population_within_5_km',
       'population_within_10_km', 'population_within_30_km',
       'population_within_100_km'],
      dtype='object')

全球火山带的分布可视化

我们通过调用folium模块来绘制一下全球各个火山的分布,代码如下

volcano_map = folium.Map()
 
# 将每一行火山的数据添加进来
for i in range(0, df_volcano.shape[0]):
    volcano = df_volcano.iloc[i]
    folium.Marker([volcano['latitude'], volcano['longitude']], popup=volcano['volcano_name']).add_to(volcano_map)
 
volcano_map

output

上述代码的逻辑大致来看就是先实例化一个Map()对象,然后遍历每一行的数据,主要针对的是数据集当中的经纬度数据,并且在地图上打上标签,我们点击每一个标签都会自动弹出对应的火山的名称

当然出来的可视化结果不怎么美观,我们先通过简单的直方图来看一下全球火山的分布情况,代码如下

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 4))
 
volcano_country = pd.DataFrame(df_volcano.groupby(['country']).size()).sort_values(0, ascending=True)
volcano_country.columns = ['Count']
volcano_country.tail(10).plot(kind='barh', legend=False, ax=ax1)
ax1.set_title('Number of Volcanoes per Country')
ax1.set_ylabel('Country')
ax1.set_xlabel('Count')
 
volcano_region = pd.DataFrame(df_volcano.groupby(['region']).size()).sort_values(0, ascending=True)
volcano_region.columns = ['Count']
volcano_region.tail(10).plot(kind='barh', legend=False, ax=ax2)
ax2.set_title('Number of Volcanoes per Region')
ax2.set_ylabel('Region')
ax2.set_xlabel('Count')
 
plt.tight_layout()
plt.show()

output

可以看到火山主要集中在美国、印度尼西亚以及日本较多,而单从地域来看,南美以及日本、中国台湾和印度尼西亚等地存在着较多的火山

全球火山带的分布可视化优化

接下来我们来优化一下之前绘制的全球火山分布的地图,调用folium模块当中CircleMarker方法,并且设定好标记的颜色与大小

volcano_map = folium.Map(zoom_start=10)
groups = folium.FeatureGroup('')
 
# 将每一行火山的数据添加进来
for i in range(0, df_volcano.shape[0]):
    volcano = df_volcano.iloc[i]
    groups.add_child(folium.CircleMarker([volcano['latitude'], volcano['longitude']],
                                         popup=volcano['volcano_name'], radius=3, color='blue',
                                         fill=True, fill_color='blue',fill_opacity=0.8))
    
volcano_map.add_child(groups)
volcano_map.add_child(folium.LatLngPopup())

output

地图可视化实战

然后我们来看一下这次火山的爆发地点,汤加共和国位于西南太平洋,属于大洋洲,具体位置是在西经175°和南纬20°左右,

import folium.plugins as plugins
import folium
 
m = folium.Map([-21.178986, -175.198242],
               zoom_start=10,
               control_scale=True, width='80%')
 
m

output

第一个参数非常明显代表的是经纬度,而zoom_start参数代表的是缩放的程度,要是我们需要进一步放大绘制的图表,可以通过调整这个参数来实现,而width参数代表的则是最后图表绘制出来的宽度。

在地图上打上标记

我们也可以在绘制出来的地图上面打上标记,例如画个圆圈,代码如下

m = folium.Map([-21.178986, -175.198242],
               zoom_start=12,
               control_scale=True, width='80%')
folium.Circle(location = [-21.177986, -175.199242], radius = 1500,
              color = "purple").add_to(m)
m

output

或者给圈出来的区域标上颜色,代码如下

m = folium.Map([-21.178986, -175.198242],
               zoom_start=12,
               control_scale=True, width='80%')
folium.Circle(location = [-21.177986, -175.199242], radius = 1500,
              color = "purple", fill = True, fill_color = "red").add_to(m)
m

output

以上就是Python可视化分析全球火山分布的详细内容,更多关于Python分析火山分布的资料请关注脚本之家其它相关文章!

相关文章

  • Python使用execjs执行包含中文参数的JavaScript

    Python使用execjs执行包含中文参数的JavaScript

    爬虫的开发过程中,往往需要对JS进行模拟,简单或者通用的还可以在Python中模拟或者找到对应的第三方库,但是复杂的就可能不好实现了,下面这篇文章主要给大家介绍了关于Python使用execjs执行包含中文参数的JavaScript的相关资料,需要的朋友可以参考下
    2022-03-03
  • pyCaret效率倍增开源低代码的python机器学习工具

    pyCaret效率倍增开源低代码的python机器学习工具

    这篇文章主要介绍了pyCaret一款可以使效率倍增的开源低代码的python机器学习工具,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • python获取linux和windows系统指定接口的IP地址的步骤及代码

    python获取linux和windows系统指定接口的IP地址的步骤及代码

    这篇文章主要介绍了python获取linux和windows系统指定接口的IP地址,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • python实现简单的超市商品销售管理系统

    python实现简单的超市商品销售管理系统

    这篇文章主要为大家详细介绍了python实现超市商品销售管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • python 批量下载bilibili视频的gui程序

    python 批量下载bilibili视频的gui程序

    这篇文章主要介绍了python 批量下载bilibili视频的gui程序,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • Python实现批量下载音效素材详解

    Python实现批量下载音效素材详解

    制作视频的时候,多少需要一些搞怪的声音?或者奇怪的声音?音乐等等。一个个下载多慢,我们今天就用python实现批量下载!需要的可以参考一下
    2022-02-02
  • 基于Python实现评论区抽奖功能详解

    基于Python实现评论区抽奖功能详解

    这篇文章主要为大家介绍了基于Python如何实现评论区抽奖的功能,文章的示例代码讲解详细,对我们学习Python有一定帮助,需要的朋友可以学习一下
    2021-12-12
  • python如何使用opencv提取光流详解

    python如何使用opencv提取光流详解

    这篇文章主要给大家介绍了关于python如何使用opencv提取光流的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-09-09
  • pandas.DataFrame选取/排除特定行的方法

    pandas.DataFrame选取/排除特定行的方法

    今天小编就为大家分享一篇pandas.DataFrame选取/排除特定行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python构建深度神经网络(DNN)

    python构建深度神经网络(DNN)

    这篇文章主要为大家详细介绍了python构建深度神经网络DNN,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论