Membuat Visualisasi Grafik Dual Axis di matplotlib

By | January 14, 2021
1,849 Views

Kalau kalian menggunakan excel ada juga lho cara membuat grafik dual axis. Namun tidak usah kuatir, di matplotlib sudah ada koq, malah jauh lebih gampang dan mudah diatur. Ploting Grafik Dual Axis sangat berguna sekali ketika kita menemui sebuah data yang mempunyai range nilai yang berbeda. Ceritanya akan berbeda kalau range sama, biasanya sih cukup menggunakan teknik hold atau overlay grafik. Contoh realnya ketika memplotkan sebuah data saham yang terdiri dari porsi penguasaan oleh investor asing serta harga. Melalui teknik dual axis akan diketahui apakah ada hubungan antara kepemilikan asing dengan harga suatu saham yang disimpan dalam format *.csv seperti berikut saham.csv

periode,porsi,harga
01/2020,45,1860
02/2020,47,1750
03/2020,50,1700
04/2020,58,1760
05/2020,65,1750
06/2020,67,1600

Kalian bisa melihat range yang sangat berbeda antar porsi dan harga yaitu untuk

  1. Porsi dengan satuan persen mempunyai range 0 sampai 100%
  2. Harga dengan satuan rupiah mempunyai range disesuaikan dengan fraksi harga, misalkan untuk data diatas mempunyai range 1500 sampai dengan 2000

Bila data diatas di plotkan, maka hasilnya sebagai berikut

Bisa disimpulkan ketika investor asing banyak membeli saham, harga semakin turun yang artinya investor lokal (mungkin saja) sedang melakukan cut loss. Bagaimana menurut kalian?

# -*- coding: utf-8 -*-
"""
Created on Thu Jul  2 07:19:16 2020

@author: mulka
"""


import numpy as np
import matplotlib.pyplot as plt
import pandas

 
# read data file
data = pandas.read_csv('saham.csv',sep=',')
periode = data['periode']
porsi = data['porsi']
harga = data['harga']
 

x_index = np.arange(len(periode))
width = 0.25
 
fig, ax = plt.subplots()
garis1 = ax.plot(x_index, porsi, marker='.', color='royalblue')

ax2 = ax.twinx()
garis2 = ax2.plot(x_index, harga, marker='.', color='#cc0000')
 
#sumbu y1
ax.set_title('Pergerakan harga dan porsi kepemilikan asing')
ax.set_ylim(0,100) #batas sumbu y dari 0 sampai 100
ax.set_yticks(np.arange(0,110,20)) #satuan percent
ax.set_ylabel('porsi (%)')


 

#sumbu y2
ax2.set_ylabel('harga (Rp.)')
ax2.set_ylim(1500,2000) #batas sumbu y dari 1500 sampai 2000 disesuaikan
ax2.set_xticks(x_index)
ax2.set_xticklabels(list(periode), fontsize='small', ha='center')
 
ax.grid(axis='y',ls='dashed')
 
kolomLegen = ['porsi','harga']
ax.legend((garis1[0], garis2[0]), kolomLegen, fontsize='x-small', loc='upper left')

for i, txt in enumerate(porsi):
    ax.annotate(txt, (x_index[i],porsi[i]))
for i, txt in enumerate(harga):
    ax2.annotate(txt, (x_index[i],harga[i]))
 
# finishing
pyrfig = plt.figure(1)
pyrfig.set_figwidth(8)
pyrfig.set_figheight(5)
#fig.savefig(r'D:\path\tempat\simpan\file\grafikAKIkematianIbu.png',bbox_inches='tight')
#plt.close(pyrfig)
plt.show()

Ploting data dual axis di Excel

Bagi kalian yang masih penasaran cara melakukan ploting data dual axis di excel, caranya cukup mudah koq. Kalian dulu pasangan tabel

Kemudian akses dialog chart  pada excel seperti berikut

 

akan tampil kotak dialog chart excel, pilih yang combo, atur sedemikian rupa

hasil akhir plot grafik dual axis di excel sebagai berikut, bisa kalian lengkapi dengan axis title, legend, serta table pada chart excel.