Python可視化分析全球火山分佈
也就在前幾天,南太平洋島國湯加發生火山噴發,有專門的專傢學者分析,這可能是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分析火山分佈的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python利用folium實現地圖可視化
- Python繪制地圖神器folium的新人入門指南
- Python 裡最強的地圖繪制神器
- Python 可視化調色盤繪制
- python opencv畫局部放大圖實例教程