Cara Membuat Grafik Secara Realtime Menggunakan Data Json Bitcoin dan Jquery

Share:

Halo semuanya, kembali lagi di sahretech. Baiklah pada artikel tutorial kali ini, saya akan menjelaskan kepada kalian cara membuat sebuah fitur grafik realtime yang dapat memperbarui data secara mandiri. Data yang akan kita pakai pada studi kasus ini adalah data json bitcoin. Untuk itu, ayo ikuti tutorialnya berikut ini.



Aplikasi dengan fitur grafik yang terus berjalan atau terus diperbarui sangatlah penting diimplementasikan jika data yang digunakan sangat dinamis dan terus berubah dalam waktu yang cepat. Misalnya data pergerakan saham, mata uang, sinyal, detak jantung, dsb. Data-data tersebut wajib diperbarui setiap saat, apalagi jika data-data tersebut berkaitan langsung dengan bisnis atau bahkan nyawa orang lain.


Saya juga telah mengulas artikel terkait dengan library chart js, artikel tersebut berisi tutorial tentang cara menggunakan grafik versi batang dengan chart js. Klik link berikut ini untuk melihat tutorialnya https://www.sahretech.com/2020/04/cara-membuat-grafik-dari-php-dan.html

Jangan lupa juga untuk melihat tutorial menampilkan data secara realtime dengan database MySQL tanpa reload dengan jquery ajax di link berikut ini. https://www.sahretech.com/2020/11/menampilkan-data-realtime-dari-database.html



Cara Membuat Grafik Secara Realtime Menggunakan Data Json Bitcoin

Pada artikel kali ini kita akan membuat sebuah grafik sederhana yang akan menampilkan pergerakan data bitcoin per 1,5 detik sekali jadi grafiknya kayak aplikasi trading gitu. Pengguna php juga dapat menggunakan fitur ini, asalkan datanya di-convert ke json terlebih dahulu. Baiklah kita mulai...

1. Buat Halaman index.html

Pertama, buatlah sebuah folder kosong degan nama bebas. Untuk letak folder tidak harus di dalam htdocs karena kali ini kita tidak menjalankan xampp server. Buatlah sebuah file index di dalam folder tersebut, lalu copy paste script di bawah ini. Untuk penjelasannya sudah saya cantumkan di sela-sela kodingan.


  <!DOCTYPE HTML>
<html>
    <head>

    </head>

    <body>
		<br><br><br>
        <!-- menampilkan grafik dengan id chartContainer -->
        <!-- ukuran grafik: tinggi = 550 piksel, dan maksimal lebar 920 piksel -->
        <div id="chartContainer" style="height: 500px; max-width: 920px; margin: 0px auto;"></div>

        <h2 style="text-align: center">dynamic line chart with data api.coindesk.com.</h2>
        
    </body>
</html>

  


2. Import Library Grafik dan Jquery

Selanjutnya, kalian import library grafik dan jquery. Copy script di bawah ini dan pastekan sebelum tag </body>.


  <!-- import libaray canvasjs dan jquery dengan cdn  -->
  <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
  <script src="https://code.jquery.com/jquery-3.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
  


3. Inisialisasi Grafik dan Membuat Variabel

Selanjuntya, kita akan menginisialisasi grafik dan membuat beberapa variabel di dalmnya. Copy script di bawah ini dan letakkan sebelum tag </body> atau setelah script import library di atas. Untuk penjelasannya dapat kalian lihat pada script di bawah ini.


  <script>
  	window.onload = function () {

		//inisialisasi data array dps kepanjangan dari datapoints
        var dps = [];

		//inisialisasi chart js
        var chart = new CanvasJS.Chart("chartContainer", {
        	title: {
            	text: "Dynamic Line chart" //memberi judul grafik
            },
            data: [{
            	type: "line", //tipe grafik yang digunakan, lihat di situsnya untuk lihat gaya lain
                dataPoints: dps //dps adalah data yang digunakan
            }]
        });
        
        var dataLength = 100; // panjang data yang ditampilkan (horizontal), ditampilkan di bagian bawah grafik
        var updateInterval = 1500; //setiap 1,5 dtk data direfresh
        var xVal = 0; 
        var yVal = 0; 
    }
  </script>
  


4. Membuat Fungsi Update Grafik

Selanjuntya, kita akan membuat fungsi update grafik yang di dalamnya juga kita akan mengambil data json bitcoin api. dengan menggunakan fungsi $.getJSON();. Untuk selanjutnya bisa kalian pahami dengan membaca tanda komentar yang ada di atas atau samping scriptnya.
Copy script di bawah ini dan pastekan tepat di bawah var yVal = 0;


  var updateChart = function (count) {
  	// data bitcoin yang digunakan https://api.coindesk.com/v1/bpi/currentprice.json
    $.getJSON("https://api.coindesk.com/v1/bpi/currentprice.json", function (data) {

		var usd = data.bpi.USD.rate_float //mengambil data spesifik rate_float
    	console.log(usd) //menampilkan data dengan console.log hanya terlihat saat mode inspect element
    	yVal = usd // mengisi variabel yVal dengan data usd

		count = count || 1;

		//melakukan perulangan data dengan for agar data dapat dijalankan
        for (var j = 0; j < count; j++) {
        	dps.push({
            	x: xVal,
                y: yVal
            });
            xVal++;
         }

		//jika datapoints telah melewati datalength
        if (dps.length > dataLength) {
        	dps.shift(); //maka hapus data awal dengan fungsi shift()
        }

	})
    chart.render();
  };
  



5. Menjalankan Fungsi Update dan Fungsi Reload 1,5 Detik Sekali

Langkah terakhir adalah menjalankan fungi yang telah kita buat sebelumnya. Copy script di bawah ini dan pastekan di bawah body.



//jalankan fungsi updateChart di atas
updateChart(dataLength);

//fungsi agar data dapat diupdate setiap 1000 detik sekali
setInterval(function () {
    updateChart()
}, updateInterval);

Save project, lalu jalankan project kalian di browser. Maka tampilannya akan tampak seperti gambar di bawah ini. Dan buat kalian yang ingin tahu lebih tentang penggunaan grafik ini silahkan menuju ke dokumentasinya di https://canvasjs.com/

grafik bergerak sahretech
Grafik Bergerak



Script Lengkap

Bagi yang kesulitan memahami tahapan penulisan script di atas, saya sediakan script lengkapnya di bawah ini.


  <!DOCTYPE HTML>
<html>
    <head>

    </head>

    <body>

        <br><br><br>
        <!-- menampilkan grafik dengan id chartContainer -->
        <!-- ukuran grafik: tinggi = 550 piksel, dan maksimal lebar 920 piksel -->
        <div id="chartContainer" style="height: 500px; max-width: 920px; margin: 0px auto;"></div>

        <h2 style="text-align: center">dynamic line chart with data api.coindesk.com.</h2>

        <!-- import libaray canvasjs dan jquery dengan cdn  -->
        <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
        <script src="https://code.jquery.com/jquery-3.5.1.js"
            integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>

        <script>
            window.onload = function () {

                //inisialisasi data array dps kepanjangan dari datapoints
                var dps = [];
                var dataLength = 100; // panjang data yang ditampilkan (horizontal), ditampilkan di bagian bawah grafik
                var updateInterval = 1000; //setiap 1,5 dtk data direfresh
                var xVal = 0; 
                var yVal = 0; 

                //inisialisasi chart js
                var chart = new CanvasJS.Chart("chartContainer", {
                    title: {
                        text: "Dynamic Line chart" //memberi judul grafik
                    },
                    data: [{
                        type: "line", //tipe grafik yang digunakan, lihat di situsnya untuk lihat gaya lain
                        dataPoints: dps //dps adalah data yang digunakan
                    }]
                });

                var updateChart = function (count) {
                    // data bitcoin yang digunakan https://api.coindesk.com/v1/bpi/currentprice.json
                    $.getJSON("https://api.coindesk.com/v1/bpi/currentprice.json", function (data) {

                        var usd = data.bpi.USD.rate_float //mengambil data spesifik rate_float
                        console.log(usd) //menampilkan data dengan console.log hanya terlihat saat mode inspect element
                        yVal = usd // mengisi variabel yVal dengan data usd

                        count = count || 1;

                        //melakukan perulangan data dengan for agar data dapat dijalankan
                        for (var j = 0; j < count; j++) {
                            dps.push({
                                x: xVal,
                                y: yVal
                            });
                            xVal++;
                        }

                        //jika datapoints telah melewati datalength
                        if (dps.length > dataLength) {
                            dps.shift(); //maka hapus data awal dengan fungsi shift()
                        }

                    })
                    chart.render();
                };

                //jalankan fungsi updateChart di atas
                updateChart(dataLength);

                //fungsi agar data dapat diupdate setiap 1000 detik sekali
                setInterval(function () {
                    updateChart()
                }, updateInterval);
            }

        </script>
    </body>
</html>
  

Sekian tutorial cara membuat grafik secara realtime menggunakan data json bitcoin. Semoga bermanfaat bagi para pembaca sekalian, kurang lebihnya saya mohon maaf. Apabila ada yang tidak dimengerti silahkan tinggalkan pesan kalian di bawah ini. Sampai jumpa di tutorial keren lainnya. Happy Coding :)

 


4 comments:

  1. kalo json [{"qty":"15954"}]
    gmna cara get datanya?

    ReplyDelete
    Replies
    1. diubah ke object data jsonnya nanti tinggal panggila data.qty

      Delete
  2. kalo cara buat grafik realtime jenis candlestick bgaimana?

    ReplyDelete
    Replies
    1. kalo candlestick belum pernah pake, coba cek dokumentasinya disini https://canvasjs.com/javascript-candlestick-chart/

      Delete

Jangan lupa kasih komentar ya!. Karena komentar kalian membantu kami menyediakan informasi yang lebih baik

Tidak boleh menyertakan link atau promosi produk saat berkomentar. Komentar tidak akan ditampilkan. Hubungi 081271449921(WA) untuk dapat menyertakan link dan promosi