Membuat grafik fluktuasi nilai USD terhadap mata uang ASEAN
- Visualisasi diagram venn dua himpunan dengan matplotlib
- Visualisasi diagram venn tiga himpunan dengan matplotlib
- Menggambar gelombang trigonometri dengan matplotlib dan numpy
- Membuat histogram dengan matplotlib
- Membuat animasi plot menggunakan matplotlib
- Membuat grafik fluktuasi nilai tukar US Dollar terhadap Rupiah
- Membuat grafik fluktuasi nilai USD terhadap mata uang ASEAN
Jika pada artikel sebelumnya grafik yang dibuat hanya menampilkan nilai USD terhadap IDR (Rupiah), maka kali ini akan dibuat perbandingan fluktuasi nilai USD terhadap beberapa nilai mata uang di negara ASEAN. Karena melibatkan lebih dari 1 mata uang dengan variasi rentang nilai yang sangat berbeda-beda terhadap USD, maka fluktuasi disajikan dalam bentuk persentase dari kurs masing-masing mata uang pada posisi awal periode (pada contoh digunakan awal 2019).
API Request
API masih menggunakan sumber yang sama yakni https://exchangeratesapi.io/, bedanya hanya pada request yang sekaligus meminta kurs beberapa mata uang sekaligus.
Mata Uang
Mata uang negara ASEAN yang tersedia pada API adalah Indonesian Rupiah (IDR), Thailand Bath (THB), Singapore Dollar (SGD), Phillipine Peso (PHP), dan Malaysian Ringgit (MYR).
Kode
Tidak banyak perbedaan mendasar dengan kode sebelumnya. Sedikit penyesuaian ada pada alamat endpoint (url) untuk request dan proses proses memplot multiple series untuk menghasilkan beberapa plot sesuai jumlah mata uang. Hasil akhir dapat dilihat pada awal artikel.
Berikut kode lengkapnya
import requests
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# https://api.exchangeratesapi.io/history?start_at=2018-01-01&end_at=2018-09-01&symbols=IDR&base=USD, cth query
api_url = 'https://api.exchangeratesapi.io/history?' # alamat API
mulai = '2019-01-01'
saat_ini = datetime.datetime.now()
akhir = datetime.datetime.strftime(saat_ini,'%Y-%m-%d')
basis = 'USD' # Dolar Amerika Serikat
tujuan = ['IDR','SGD','MYR','THB','PHP',]
payload = {
'start_at':mulai,
'end_at':akhir,
'base': basis,
'symbols': ','.join(tujuan)
}
rslt = requests.get(api_url,payload) # mengirimkan request ke alamat API
nilai_tukar_historis = [] # siapkan list untuk menyimpan nilai tukar
if rslt.status_code == requests.codes.ok : # server memberikan respon ok
hasil = rslt.json() # konversi hasil dari format json ke dictionary
rates = hasil['rates'] # ambil data historical nilai tukar
for date,rate in rates.items():
tanggal = datetime.datetime.strptime(date,'%Y-%m-%d')
nilai_tukar_historis.append([tanggal,rate])
#print(date,rate)
else :
print('Gagal mendapatkan respon yang diinginkan dari server',rslt,rslt.json())
if nilai_tukar_historis: # cek apakah ada isinya
nilai_tukar_historis.sort() # urutkan berdasarkan tanggal (elemen pertama)
tanggal,rates = zip(*nilai_tukar_historis) # pecah menjadi dua list
data = [[rate[cur]*100/rates[0][cur] for cur in tujuan] for rate in rates]
data = [list(t) for t in zip(*data)]
fig,ax = plt.subplots()
plt.title('Fluktuasi nilai USD terhadap Mata Uang ASEAN')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%b-%Y'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=1))
for i in range(len(tujuan)):
plt.plot(tanggal,data[i],label=tujuan[i]) # plot tanggal vs nilai tukar
plt.legend()
plt.xlabel('Periode')
plt.ylabel('% terhadap nilai awal 2019')
plt.grid()
plt.gcf().autofmt_xdate()
plt.show()
Semoga bermanfaat,
Salam