Membuat grafik fluktuasi nilai USD terhadap mata uang ASEAN

This entry is part 7 of 7 in the series Visualisasi dengan matplotlib

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

Series Navigation<< Membuat grafik fluktuasi nilai tukar US Dollar terhadap Rupiah

You may also like...

Berikan komentar