欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-13 16:57:24
目录准备工作全球火山带的分布可视化全球火山带的分布可视化优化地图可视化实战在地图上打上标记也就在前几天,南太平洋岛国汤加发生火山喷发,有专门的专家学者分析,这可能是30年来全球规模最大的一次海底火山喷...

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

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

今天小编就用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

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

数据集包含了这些个数据

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

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

上述代码的逻辑大致来看就是先实例化一个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

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

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

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

接下来我们来优化一下之前绘制的全球火山分布的地图,调用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

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

地图可视化实战

然后我们来看一下这次火山的爆发地点,汤加*位于西南太平洋,属于大洋洲,具体位置是在西经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

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

第一个参数非常明显代表的是经纬度,而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

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

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

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分析火山分布的资料请关注其它相关文章!