Bismillahirrahmanirrahim.
Di luar pemrograman kemarin, sering saya tidak melakukan penulisan kode. Sering saya ingin mencoba examples yang disediakan oleh Qt. Kemarin saya menginstal pustaka Qwt dari repo (karena ketertarikan besar saya untuk mencari pengganti TeeChart di Linux) dan baru hari ini tahu kalau Qwt sama seperti Qt Creator, sama-sama membawa example programs siap pakai. Saya tahu dari mencari bagaimana real time plotting dengan Qwt. Pokoknya grafik sinyal output harus dinamis dan bisa berubah-ubah sesuai input. Eh, pada suatu forum disebut Oscilloscope Example milik Qwt. Lho, memangnya ada? Saya coba cari dengan locate di bash Ubuntu saya dan ketemu. Letaknya di /usr/share/doc/libqwt-doc/examples/. Di situ ada banyak sekali folder example programs. Nah, salah satunya bernama oscilloscope. Saya salin folder itu ke Publik dan membukanya dengan Qt Creator. Ini hasilnya.
Hasilnya sungguh realtime seperti TeeChart. Bahkan bisa jadi ini lebih baik. Beranimasi, sinyalnya dinamis, bergerak terus, dan sinyal berubah-ubah sesuai data yang dimasukkan saat runtime. Saya sendiri sangat kaget saat berhasil mengompilasi Osiloskop ini di Qt Creator. Mirip sekali dengan Osiloskop di dunia nyata dan yang sangat menggembirakan adalah akhirnya saya temukan pengganti TeeChart di Linux. Saya sangat gembira malam ini, walhamdulillah.
Apa yang dimaksud dengan realtime? Ya mudahnya, output akan berubah sesuai input yang dimasukkan pada saat itu juga. Lihat, perhatikan knob bundar Amplitude. Saya perkecil maka bentuk sinyal juga menyusut. Persis Osiloskop aslinya. Kalau yang di bawah ini, perhatikan knob Frequency. Saya perkecil, sinyal menjadi renggang tidak lagi mampat. Sungguh persis Osiloskop aslinya. Yang paling penting, ini membuktikan bahwa kita bisa membuat simulasi realtime signal plotting dengan menggunakan pustaka di Linux. Jadi tidak hanya di Windows saja dengan pustaka TeeChart dan IDE Microsoft Visual Studio yang kedua-duanya komersial melainkan juga di Linux bisa bahkan Qwt selaku pustaka dan Qt Creator selaku IDE sama-sama gratis bahkan open source. Suatu keberuntungan buat kita.
Untuk Siapa Tulisan Ini?
- Peneliti/pelajar yang ingin membuat aplikasi simulasi real time plotting di Linux.
- Peneliti/pelajar yang ingin pengganti TeeChart yang gratis dan open source di Linux.
- Programer yang butuh pustaka untuk aplikasi simulasi Biorhytm atau komputasi medikal yang lain.
Behind The Scene Tulisan Ini
Gara-gara TeeChart. Saya sendiri tidak tahu menahu gambar di atas ini program untuk apa. Namun yang paling penting, program ini menayangkan grafik sinyal-sinyal secara dinamis. Lalu kita bisa memasukkan angka-angka di kotak putih sebelah kanan itu dan sinyal-sinyalnya sungguh bisa berubah-ubah. Ini dinamakan simulasi. Dan ini dilakukan dengan bahasa C, pada Microsoft Visual C++, dengan pustaka charting yang bernama Steema TeeChart. Saya bisa mengatakannya karena saya sempat melihat sendiri orang yang membuat program ini. Satu hal saja yang saya pikirkan kala itu (mungkin 4 bulan lalu) bahwa saya harus temukan pengganti TeeChart untuk Linux. Harus bisa dibuat simulasi serupa (tentunya yang realtime bukan yang statis) di Linux. Namun kala itu saya belum tahu sama sekali adanya pustaka-pustaka untuk plotting di Linux.
Selama ini, sejak sebelum posting Qt pertama saya di sini, saya mencari pustaka-pustaka pengganti TeeChart untuk Linux. Cukup sulit menemukannya walau sudah saya temukan calon-calonnya:
- OpenGL (saya sudah tahu sebelum keinginan mencari itu ada, tetapi terlalu sulit)
- Matplotlib http://matplotlib.sourceforge.net/
- GNUplot http://www.gnuplot.info/
- QCustomPlot http://qcustomplot.com/ (paling menarik buat saya)
- wxPlot http://wxcode.sourceforge.net/showcomp.php?name=wxPlot
- wxMathPlot http://wxmathplot.sourceforge.net/
- libgraph http://savannah.nongnu.org/projects/libgraph/
- koolplot http://koolplot.codecutter.org/
- EasyBMP http://easybmp.sourceforge.net/
- plotutils http://gnu.org/s/plotutils/
- plplot http://plplot.sourceforge.net
- wxArt2d http://wxart2d.org/moin/WxArt2dScreenShots
- MathGL http://mathgl.sourceforge.net/
- Scidavis http://scidavis.sourceforge.net/ (bukan pustaka)
- DISLIN http://www.dislin.de/
- wxChart http://wxcode.sourceforge.net/components/wxchart/
- PyQtGraph http://www.pyqtgraph.org/
- GUIQwt https://code.google.com/p/guiqwt/
- Chaco http://code.enthought.com/projects/chaco/gallery.php
- Qwt http://qwt.sourceforge.net/ (sebenarnya masih ada yang lain, hanya saja yang saya temukan cuma sekian).
Supaya nyata, ini saya sertakan skrinsot jadi salah satu pustaka (PyQtGraph, open source):
Serta satu lagi, yakni Matplotlib (open source):
Dan harus saya sebut juga laman yang mengantarkan saya kepada semua pustaka plotting yang ada:
- http://stackoverflow.com/questions/296199/is-there-any-out-of-the-box-2d-3d-plotting-library-for-c
- http://wiki.python.org/moin/NumericAndScientific/Plotting
- http://qt-project.org/forums/viewthread/14819 (mengantar saya pada QCustomPlot)
Yang saya pikirkan kala membuka semua laman itu hanyalah: “ini bisa realtime apa tidak?“. Soalnya saya ingin yang realtime bukan yang statis. Akhirnya semua ini berakhir pada Qwt setelah saya melihat dua laman ini:
- http://www.swharden.com/blog/2013-05-08-realtime-data-plotting-in-python/ (gara-gara ini saya semangat lagi mencari setelah saya anggap sudah mustahil, saya melihat Qt Designer di sana dan kaget sekali)
- http://codingexodus.blogspot.com/2013/01/getting-started-with-qwt.html (saya coba dan berhasil)
Hasilnya saya cari keterangan soal Qwt dan alhamdulillah ternyata jawabannya ada di dalam examples milik Qwt. Supaya nyata juga, ini skrinsot folder oscilloscope asli milik Qwt.
Kode
Ada satu hal penting setelah mengimpor satu folder oscilloscope ke dalam Qt Creator. Anda harus menambahkan satu baris kode ini di dalam .pro Anda.
CONFIG += qwt
atau dipastikan Qt Creator Anda error karena tidak bisa menemukan letak header-header Qwt. Saya menggunakan Qt Creator 4.8 pada Ubuntu 12.04 dan error kalau tidak ada baris ini. Setelah ditulis baru jalan programnya seperti skrinsot pertama. Mudah sekali, bukan?
Unduh Kode Sumber
Tautan: http://otodidak.freeserver.me/tarball/oscilloscope.tar.gz
Ukuran: 8 KB
Kesimpulan
Qwt adalah pustaka Qt untuk realtime signal plotting pengganti TeeChart di Linux. Bisa digunakan untuk sinyal sinus biasa sampai simulasi Osiloskop.
Penutup
Semoga tulisan ini bermanfaat untuk Anda sekalian.