如何用Python脚本实现对火山分布可视化分析
Admin 2022-09-06 群英技术资讯 918 次浏览
这篇文章主要讲解了“如何用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

数据集包含了这些个数据
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

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
topK是常用的一个功能,在python中,numpy等计算库使用了丰富的底层优化,对于矩阵计算的效率远高于python的for-loop实现。因此,我们希望尽量用一些numpy函数的组合实现topK。
本篇文章给大家带来了关于Python的相关知识,其中主要整理了随机森林模型的相关问题,包括了集成模型简介、随机森林模型基本原理、使用sklearn实现随机森林模型等等内容,
这篇文章主要介绍了教你怎么用python绘制dotplot,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
什么是异常?当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。
python循环的分类、语句及简单的应用是怎样的?在Python中,循环分为while和for两种,最终实现效果相同。下文的讲解详细,步骤过程清晰,对大家进一步学习和理解相关知识有一定的帮助。有这方面学习需要的朋友就继续往下看吧!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008