作者 | 俊欣
来源 | 关于数据分析与可视化
近日,南太平洋岛国汤加发生火山喷发,有专门的专家学者分析,这可能是30年来全球规模最大的一次海底火山喷发,它引发的海啸以及火山灰将对周边的大气、洋流、淡水、农业以及民众健康等都造成不同程度的影响。
Python
当中的folium
模块以及其他的可视化库来对全球的火山情况做一个分析。kaggle
网站,主要由美国著名的史密森学会整理所得importpandasaspd
importfolium.pluginsasplugins
importfolium
df_volcano=pd.read_csv("volcano.csv")
df_volcano.head()
df_volcano.columns
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()
#将每一行火山的数据添加进来
foriinrange(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
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('NumberofVolcanoesperCountry')
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('NumberofVolcanoesperRegion')
ax2.set_ylabel('Region')
ax2.set_xlabel('Count')
plt.tight_layout()
plt.show()
folium
模块当中CircleMarker
方法,并且设定好标记的颜色与大小volcano_map=folium.Map(zoom_start=10)
groups=folium.FeatureGroup('')
#将每一行火山的数据添加进来
foriinrange(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())
importfolium.pluginsasplugins
importfolium
m=folium.Map([-21.178986,-175.198242],
zoom_start=10,
control_scale=True,width='80%')
m
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
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
分享
点收藏
点点赞
点在看
文章转发自AI科技大本营微信公众号,版权归其所有。文章内容不代表本站立场和任何投资暗示。
Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM