Python可視化分析全球火山分布
也就在前幾天,南太平洋島國(guó)湯加發(fā)生火山噴發(fā),有專門的專家學(xué)者分析,這可能是30年來(lái)全球規(guī)模最大的一次海底火山噴發(fā),它引發(fā)的海嘯以及火山灰將對(duì)周邊的大氣、洋流、淡水、農(nóng)業(yè)以及民眾健康等都造成不同程度的影響。

今天小編就用Python當(dāng)中的folium模塊以及其他的可視化庫(kù)來(lái)對(duì)全球的火山情況做一個(gè)分析。
準(zhǔn)備工作
和以往一樣,我們先導(dǎo)入需要數(shù)據(jù)分析過(guò)程當(dāng)中需要用到的模塊并且讀取數(shù)據(jù)集,本次的數(shù)據(jù)集來(lái)自由kaggle網(wǎng)站,主要由美國(guó)著名的史密森學(xué)會(huì)整理所得
import pandas as pd
import folium.plugins as plugins
import folium
df_volcano = pd.read_csv("volcano.csv")
df_volcano.head()output

數(shù)據(jù)集包含了這些個(gè)數(shù)據(jù)
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')
全球火山帶的分布可視化
我們通過(guò)調(diào)用folium模塊來(lái)繪制一下全球各個(gè)火山的分布,代碼如下
volcano_map = folium.Map()
# 將每一行火山的數(shù)據(jù)添加進(jìn)來(lái)
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

上述代碼的邏輯大致來(lái)看就是先實(shí)例化一個(gè)Map()對(duì)象,然后遍歷每一行的數(shù)據(jù),主要針對(duì)的是數(shù)據(jù)集當(dāng)中的經(jīng)緯度數(shù)據(jù),并且在地圖上打上標(biāo)簽,我們點(diǎn)擊每一個(gè)標(biāo)簽都會(huì)自動(dòng)彈出對(duì)應(yīng)的火山的名稱
當(dāng)然出來(lái)的可視化結(jié)果不怎么美觀,我們先通過(guò)簡(jiǎn)單的直方圖來(lái)看一下全球火山的分布情況,代碼如下
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

可以看到火山主要集中在美國(guó)、印度尼西亞以及日本較多,而單從地域來(lái)看,南美以及日本、中國(guó)臺(tái)灣和印度尼西亞等地存在著較多的火山
全球火山帶的分布可視化優(yōu)化
接下來(lái)我們來(lái)優(yōu)化一下之前繪制的全球火山分布的地圖,調(diào)用folium模塊當(dāng)中CircleMarker方法,并且設(shè)定好標(biāo)記的顏色與大小
volcano_map = folium.Map(zoom_start=10)
groups = folium.FeatureGroup('')
# 將每一行火山的數(shù)據(jù)添加進(jìn)來(lái)
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

地圖可視化實(shí)戰(zhàn)
然后我們來(lái)看一下這次火山的爆發(fā)地點(diǎn),湯加共和國(guó)位于西南太平洋,屬于大洋洲,具體位置是在西經(jīng)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

第一個(gè)參數(shù)非常明顯代表的是經(jīng)緯度,而zoom_start參數(shù)代表的是縮放的程度,要是我們需要進(jìn)一步放大繪制的圖表,可以通過(guò)調(diào)整這個(gè)參數(shù)來(lái)實(shí)現(xiàn),而width參數(shù)代表的則是最后圖表繪制出來(lái)的寬度。
在地圖上打上標(biāo)記
我們也可以在繪制出來(lái)的地圖上面打上標(biāo)記,例如畫(huà)個(gè)圓圈,代碼如下
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

或者給圈出來(lái)的區(qū)域標(biāo)上顏色,代碼如下
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可視化分析全球火山分布的詳細(xì)內(nèi)容,更多關(guān)于Python分析火山分布的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python3.4編程實(shí)現(xiàn)簡(jiǎn)單抓取爬蟲(chóng)功能示例
這篇文章主要介紹了Python3.4編程實(shí)現(xiàn)簡(jiǎn)單抓取爬蟲(chóng)功能,涉及Python3.4網(wǎng)頁(yè)抓取及正則解析相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Django?項(xiàng)目配置拆分獨(dú)立的實(shí)現(xiàn)
Django 項(xiàng)目中,我們默認(rèn)的配置是都在 settings.py 文件里面的,但是實(shí)際本地調(diào)試和線上應(yīng)該是需要兩個(gè)環(huán)境的,我們現(xiàn)在來(lái)拆分下配置,本文就詳細(xì)的來(lái)介紹一下2021-11-11
Python 專題二 條件語(yǔ)句和循環(huán)語(yǔ)句的基礎(chǔ)知識(shí)
本文主要介紹了Python條件語(yǔ)句和循環(huán)語(yǔ)句的基礎(chǔ)知識(shí)。主要內(nèi)容包括: 1.條件語(yǔ)句:包括單分支、雙分支和多分支語(yǔ)句,if-elif-else;2.循環(huán)語(yǔ)句:while的使用及簡(jiǎn)單網(wǎng)絡(luò)刷博器爬蟲(chóng);3.循環(huán)語(yǔ)句:for的使用及遍歷列表、元組、文件和字符串。2017-03-03
python flask中動(dòng)態(tài)URL規(guī)則詳解
今天小編就為大家分享一篇python flask中動(dòng)態(tài)URL規(guī)則詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python多線程實(shí)現(xiàn)支付模擬請(qǐng)求過(guò)程解析
這篇文章主要介紹了python多線程實(shí)現(xiàn)支付模擬請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
python將字典內(nèi)容存入mysql實(shí)例代碼
這篇文章主要介紹了python將字典內(nèi)容存入mysql實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python使用PyCharm進(jìn)行遠(yuǎn)程開(kāi)發(fā)和調(diào)試
這篇文章主要介紹了python使用PyCharm進(jìn)行遠(yuǎn)程開(kāi)發(fā)和調(diào)試,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
python使用json序列化datetime類型實(shí)例解析
這篇文章主要介紹了python使用json序列化datetime類型實(shí)例解析,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02

