Well, setelah sekian lama hanya posting jalan-jalan saja, sekarang boleh lah ya sedikit kembali ke peradaban 😀 . Tak terasa sudah 8 bulan lebih saya tidak posting mengenai hal-hal yang berbau pemrograman. Terkait pemrograman, biasanya posting masalah sederhana yang ada di Java atau Matlab, ya jujur saja dua bahasa pemrograman itu yang saya geluti dalam kurun waktu tahunan. Sementara bahasa pemrograman yang lain hanya dipelajari kalau saat ada tugas kuliah atau saat workshop, dll. Python adalah hal baru buat saya, katakanlah saya belum pernah building application menggunakan Python from scratch, terakhir menggunakan saat workshop Google Cloud Developer Day, namun itupun tak banyak, tak ada seujung jari.
Langsung masuk ke topik masalah, sebenernya apa yang saya posting adalah hal atau kendala yang saya alami, yang kadang butuh waktu buat atik atik. Jadi saya punya masalah untuk memberi legend di dalam sebuah plot. Sebenarnya sederhana, yang menjadi agak kurang sederhana karena legend ini berada dalam looping. Saya utak-atik berdasarkan referensi yang sudah saya cantumkan di bawah. Keadaanya saya ingin membuat multiple legend itu di pojok kanan bawah, sebenarnya mau dimana saja gakpapa sih, kalau lihat hasil output plot lebih enak dipandang kalau diletakkan di pojok kanan bawah 😀
Sebelum memulai saya pastikan bahwa kita akan menggunakan modul matplotlib, dan saya menggunakan barisan perintah ini untuk memanfaatkan fungsi plot, yang kemudian diberi nama variabel plt.
[code language=”python”]
import matplotlib.pyplot as plt
[/code]
Percobaan Pertama
Dalam percobaan pertama ini saya mencoba meletakkan nama legend (name) di dalam loop. Ternyata meskipun sudah ada dalam loop, legend tidak bisa tampil berulang dan yang terbaca adalah nama legend di looping paling akhir. Akhirnya saya coba ke Percobaan Kedua.
[code language=”python”]
for name,lindx,sr_list in r_list:
plt.plot(lindx,sr_list,ccode[i])
plt.legend([name], loc=’lower right’)
i = (i+1)%len(cname)
plt.xlabel(‘Dimension’)
plt.ylabel(‘Success Rate’)
plt.show()
[/code]
Percobaan Kedua
Pada Percobaan Kedua ini saya merefer hampir persis dengan ada yang ada pada sumber, yaitu variabel name yang sebelumnya diletakkan bersamaan dengan ketika membuat plot. Berhasil! By default, ternyata plt.legend() mengeluarkan hasil legend di posisi pojok kanan atas, sehingga sekarang kita coba edit posisinya biar ada di pojok kanan bawah.
[code language=”python”]
for name,lindx,sr_list in r_list:
plt.plot(lindx,sr_list,ccode[i], label=name)
plt.legend()
i = (i+1)%len(cname)
plt.xlabel(‘Dimension’)
plt.ylabel(‘Success Rate’)
plt.show()
[/code]
Percobaan Ketiga
Ini baru sesuai dengan apa yang diinginkan. Awalnya saya mencoba meletakkan posisi legend berdampingan dengan saat membuat plot (jadi begini …, label =name, loc=’lower right’) dan ini menyebabkan error, karena tidak sesuai dengan aturan dalam membentuk plot, akhirnya setelah coba-coba (sebenarnya iseng), meletakkan loc=’lower right’ di dalam plt.legend(..). 😀 Jadi deh. 🙂
[code language=”python”]
for name,lindx,sr_list in r_list:
plt.plot(lindx,sr_list,ccode[i], label=name)
plt.legend(loc=’lower right’)
i = (i+1)%len(cname)
plt.xlabel(‘Dimension’)
plt.ylabel(‘Success Rate’)
plt.show()
[/code]
Oke sekian dulu ya, sebenarnya postingan ini buat dokumentasi saya juga, barangkali lupa, tinggal buka catatan. Seringnya postingan yang saya tulis itu bermanfaat buat saya sendiri, tetapi jelas tidak menutup kemungkinan kalau bisa bermanfaat untuk orang lain, kenapa tidak? 😉
Warsawa, 22 Mei 2015
Reference
http://stackoverflow.com/questions/14826119/multiple-legends-in-matlabplot-in-for-loop
PS: Kodingan tidak sepenuhnya milik saya, saya hanya mengedit dan menambahkan berdasarkan referensi
Wah mainan ular sekarang. XD
Iya mas, tapi gak banyak soalnya kita tinggal edit sama kebutuhan yang diminta dosennya. Jadi, kita udah dikasih bundle program. Hanya saja kita harus paham dosennya ngoding apa, kalau gak gitu tersesat XD