
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