Ada banyak cara untuk membuat peta interaktif, salah satu cara favorit saya adalah Folium; sebuah map visualization library berbasis bahasa Python.
Dalam artikel ini, saya ingin menunjukkan cara membuat peta interaktif dengan kondisi saat ini (4 April 2020); data terbaik untuk merepresentasikan kondisi ini adalah jumlah kasus COVID-19 yang dikonfirmasi di seluruh dunia. Mari kita mulai.
Membuat Peta
Bagi yang belum tahu apa itu Folium; Folium adalah map visualization library yang memiliki banyak fitur bawaan khusus untuk membuat peta interaktif. Kita bisa menginstal library Folium dengan menggunakan perintah di bawah ini.
pip install folium
#atau
conda install folium -c conda-forge
Dengan perintah tersebut, kita sudah menginstal library Folium. Sekarang, mari kita coba membuat peta interaktif sederhana (atau peta dasar).
import folium
m = folium.Map()
m
Sekarang kita sudah memiliki peta dasar. Dalam kasus ini, saya ingin membuat peta dunia yang menampilkan warna berbeda pada setiap negara (choropleth) berdasarkan jumlah kasus COVID-19 yang dikonfirmasi per 3 April 2020.
Untuk melakukan ini, kita perlu memiliki datanya terlebih dahulu. Untungnya, sekarang ada banyak API yang menyediakan data ini. Dalam kasus saya, saya akan menggunakan API dari thevirustracker.com. Mari kita coba mengambil data dari API tersebut. Berikut adalah langkah-langkah untuk mengambil data dari API.
import requests
res = requests.get('https://api.thevirustracker.com/free-api?countryTotals=ALL')
covid_current = res.json()
Dari data di atas, kita bisa melihat ada banyak data tapi dalam kasus ini, saya hanya akan mengambil data untuk Negara (title) dan Total Kasus (total_cases).
df = []
for j in range(1,len(covid_current['countryitems'][0])):
df.append([covid_current['countryitems'][0]['{}'.format(j)] ['title'],
covid_current['countryitems'][0]['{}'.format(j)]['total_cases']])
df_covid = pd.DataFrame(df, columns = ['Country', 'Total Case'])
Pada data terakhir, kita juga membutuhkan data GeoJSON dari negara-negara di dunia. Data GeoJSON adalah format data yang mewakili fitur geografis, seperti batas negara. Folium sudah memiliki data GeoJSON yang bisa kita gunakan.
url = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data'
country_shapes = f'{url}/world-countries.json'
Saya juga akan membersihkan data COVID-19 karena, pada langkah berikutnya, saya akan menggunakan data negara yang disediakan oleh Folium pada peta kita. Saya perlu nama negara di dataset COVID-19 agar sesuai dengan nama negara yang disediakan oleh Folium.
df_covid.replace('USA', "United States of America", inplace = True)
df_covid.replace('Tanzania', "United Republic of Tanzania", inplace = True)
df_covid.replace('Democratic Republic of Congo', "Democratic Republic of the Congo", inplace = True)
df_covid.replace('Congo', "Republic of the Congo", inplace = True)
df_covid.replace('Lao', "Laos", inplace = True)
df_covid.replace('Syrian Arab Republic', "Syria", inplace = True)
df_covid.replace('Serbia', "Republic of Serbia", inplace = True)
df_covid.replace('Czechia', "Czech Republic", inplace = True)
df_covid.replace('UAE', "United Arab Emirates", inplace = True)
Sekarang kita memiliki data untuk membuat peta choropleth kasus COVID-19 yang dikonfirmasi menggunakan Folium. Pada langkah berikutnya, kita hanya perlu menambahkan layer choropleth ke peta dasar kita.
folium.Choropleth(
geo_data=country_shapes,
name='choropleth COVID-19',
data=df_covid,
columns=['Country', 'Total Case'],
key_on='feature.properties.name',
fill_color='PuRd',
nan_fill_color='white'
).add_to(m)
m
Kita sudah memiliki peta sederhana yang mewakili kasus COVID-19 yang dikonfirmasi di dunia. Seperti yang kita lihat, Amerika Serikat per 3 April 2020 diwarnai dengan warna paling gelap. Ini karena jumlah kasus di sana yang tertinggi saat ini. Beberapa negara seperti Italia, China, Spanyol, juga diwarnai sedikit lebih gelap dari yang lain karena mereka memiliki jumlah kasus terkonfirmasi tertinggi setelah AS.
Sebagai tambahan, saya akan menambahkan marker yang bisa diklik untuk menunjukkan nama negara. Dalam hal ini, kita membutuhkan garis lintang dan bujur dari setiap negara yang tersedia dalam file CSV ini.
Kita baru saja membuat peta interaktif sederhana dari kasus COVID-19 yang dikonfirmasi. Masih banyak hal lain yang bisa kita visualisasikan seperti kasus sembuh, kasus kematian, persentase, dan banyak lagi.
Kesimpulan
Membuat peta interaktif sederhana menjadi mudah menggunakan library Folium, yang kita butuhkan hanyalah data yang sekarang bisa diambil melalui API. Choropleth adalah salah satu peta yang cocok untuk memvisualisasikan kasus COVID-19 yang dikonfirmasi di dunia.
Semoga bermanfaat!
Comments