Langkah - Langkah Membuat Bump Charts Dengan Matplotlib
Dalam blog ini, Anda akan mempelajari cara menampilkan perubahan peringkat dengan Matplotlib dasar, tanpa memerlukan library tambahan. Sebagai contoh, Anda akan menggunakan data yang diterbitkan oleh Octoverse Report 2023, yang menganalisis bahasa pemrograman paling populer di tahun 2023.
1. Apa itu bump chart?
Bump chart mirip dengan plot garis tetapi berfokus pada mengeksplorasi perubahan peringkat dari waktu ke waktu. Bayangkan, misalnya, setiap baris pada gambar di bawah ini mewakili peringkat popularitas penyanyi. Garis dan warnanya melambangkan penyanyi, sumbu x melambangkan tahun, dan sumbu y melambangkan peringkat.
2. Pesaing kami: bahasa pemrograman
Menurut Octoverse, pada tahun 2023, programmer menggunakan sekitar 500 bahasa untuk mengembangkan perangkat lunak di GitHub. JavaScript adalah bahasa yang paling banyak digunakan diikuti oleh Python, bahasa yang akan kita gunakan untuk membuat bump chart kita.
Laporan tersebut juga mengungkapkan bahwa Hashicorp Configuration Language (HCL) adalah bahasa dengan pertumbuhan tercepat di GitHub yang mencerminkan perluasan infrastruktur cloud. Rust dan TypeScript masing-masing berada di urutan kedua dan ketiga dalam pertumbuhan.
Ada beberapa peringkat menggunakan data dan metode yang berbeda untuk memperkirakan posisi masing-masing bahasa. Peringkat lainnya adalah Survei Pengembang 2020 Stack Overflow, yang menyajikan hasil yang serupa tetapi tidak identik. Posting ini akan menggunakan data Octoverse sebagai contoh.
Untuk mempermudah reproduksibilitas, data dibuat kode dan disimpan dalam daftar kamus, seperti yang ditunjukkan di bawah ini.
years_list = list(range(2014,2023,2))
list_programming = [
{
'Name' : ["Javascript" for i in range(5)],
'Year' : years_list,
'Rank' : [1,1,1,1,1]
},
{
'Name' : ["Python" for i in range(5)],
'Year' : years_list,
'Rank' : [4,3,3,2,2]
},
{
'Name' : ["Java" for i in range(5)],
'Year' : years_list,
'Rank' : [2,2,2,3,3]
},
{
'Name' : ["Typescript" for i in range(5)],
'Year' : years_list,
'Rank' : [10,10,7,4,4]
},
{
'Name' : ["C#" for i in range(5)],
'Year' : years_list,
'Rank' : [8,6,6,5,5]
},
{
'Name' : ["C++" for i in range(5)],
'Year' : years_list,
'Rank' : [6,5,5,7,6]
},
{
'Name' : ["PHP" for i in range(5)],
'Year' : years_list,
'Rank' : [3,4,4,6,7]
},
{
'Name' : ["Shell" for i in range(5)],
'Year' : years_list,
'Rank' : [9,9,9,9,8]
},
{
'Name' : ["C" for i in range(5)],
'Year' : years_list,
'Rank' : [7,8,7,7,9]
},
{
'Name' : ["Ruby" for i in range(5)],
'Year' : years_list,
'Rank' : [5,7,10,10,10]
}
]
3. Metode subplot Matplotlib
Ada beberapa cara untuk membuat plot dengan Matplotlib, tetapi untuk mendapatkan fleksibilitas, disarankan untuk menggunakan subplots(). Metode ini membuat dua objek: satu objek dari kelas Figure dan salah satu dari kelas Axes. Objek Figure akan menjadi wadah plot Anda, sedangkan objek Axes akan menjadi plot itu sendiri.
Kode di bawah memuat library yang diperlukan dan membuat dua objek yang baru saja disebutkan.
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
4. Setting plot size
In Matplotlib you may change the size of your plot using plt.rcParams["figure.figsize"]. We will set it to be 12 inches wide and 6 inches high.
plt.rcParams["figure.figsize"] = (12,6)
5. Memanggil metode plot untuk setiap bahasa pemrograman
Untuk setiap kamus dalam daftar kami, kami akan memanggil metode plot kapak yang menentukan tahun pada sumbu x dan peringkat pada sumbu y. Selain itu, Anda dapat memilih gaya penanda dan garis dengan "o-" yang menunjukkan bahwa kami menginginkan garis dengan titik sebagai penanda. Perhatikan bahwa warna face marker diatur ke putih, artinya titik diisi dengan warna putih.
Hasilnya hampir seperti yang kita inginkan, tetapi diperlukan penyesuaian lebih lanjut.
for element in list_programming:
ax.plot(element["Year"],
element["Rank"],
"o-", # format of marker / format of line
markerfacecolor="white")
6. Membalikkan sumbu y dan menyetel centang sumbu
Alangkah baiknya memiliki bahasa nomor satu di bagian atas bagan. Selain itu, kami ingin semua nomor peringkat ditampilkan pada sumbu y.
Kita bisa melakukannya dengan menggunakan perintah plt.gca().invert_yaxis(). Selain itu, kita dapat menyetel tick y dengan meneruskan larik NumPy dengan nilai ke plt.yticks(). Array NumPy dapat dibuat dengan np.arange().
plt.gca().invert_yaxis()
plt.yticks(np.arange(1, 11, 1))
7. Memberi label garis
Kita perlu mengidentifikasi bahasa pemrograman mana yang sesuai dengan masing-masing baris. Untuk mencapai itu, kita bisa menggunakan metode anotasi ax. Parameter pertama yang diterimanya adalah teks yang ingin kita anotasi. Kami akan menggunakan list_programming["Name"][0]untuk mendapatkan nama bahasa.
Parameter xy adalah titik yang ingin kita anotasi. Dalam kasus kami, ini adalah akhir dari setiap baris. Parameter xytext adalah titik di mana kita ingin menambahkan teks kita. Perhatikan bahwa xytext hampir sama dengan xy tetapi sedikit lebih ke kanan pada sumbu x. Akhirnya, vamengacu pada perataan vertikal.
ax.annotate(element["Name"][0],
xy=(2023, element["Rank"][4]),
xytext=(2023.2,element["Rank"][4]),
va="center")
8. Mengubah lebar garis di Matplotlib
Garis yang menunjukkan jalur masing-masing bahasa relatif tipis dan kita dapat menambah lebarnya dengan parameter lebar garis di dalam metode plot.
9. Membersihkan plot
Untuk memperjelas plot, bingkai plot dapat ditekan. Untuk melakukan itu, perhatikan bahwa setiap objek Axes memiliki 4 pricker. Satu spine adalah satu sisi bingkai plot. Kita dapat mengulanginya dengan perulangan for dan menyetel atribut visibilitasnya ke False. Lihat semua penyesuaian di bawah ini.
for element in list_programming:
ax.plot(element["Year"],
element["Rank"],
"o-", # format of marker / format of line
markerfacecolor="white",
linewidth=3)
ax.annotate(element["Name"][0],
xy=(2023, element["Rank"][4]),
xytext=(2023.2,element["Rank"][4]),
va="center")
plt.gca().invert_yaxis()
plt.yticks(np.arange(1, 11, 1))
for spine in ax.spines.values():
spine.set_visible(False)
Jauh lebih baik bukan?
Bagan lump ini tidak memerlukan library tambahan apa pun. Selain itu, Matplotlib memungkinkan Anda menyesuaikannya dengan banyak cara! Dalam posting ini, saya menunjukkan rekomendasi lebih lanjut untuk memplot visualisasi yang menarik dengan Matplotlib.
10. Bahasa pemrograman teratas di tahun 2023
Sekarang kita dapat memiliki gambaran yang jelas tentang bagaimana bahasa pemrograman berkembang selama dekade terakhir.
JavaScript telah mempertahankan posisi teratas sejak 2014. Menurut Berkeley Boot Camps, popularitas JavaScript dijelaskan karena sebagian besar browser web menggunakannya. Pada tahun 2014, Python adalah bahasa keempat yang paling banyak digunakan dan sejak itu bahasa tersebut semakin populer. Hari ini adalah bahasa kedua yang paling banyak digunakan di GitHub. Akhirnya, Java telah kehilangan beberapa popularitas tetapi tetap menjadi bahasa ketiga yang paling banyak digunakan.
Kesimpulan
Dalam posting ini, Anda belajar menampilkan perubahan peringkat dengan grafik Matplotlib dasar. Untuk mencapainya, tidak diperlukan library tambahan, yang Anda butuhkan hanyalah memahami objek Matplotlib dan cara menyesuaikannya untuk menampilkan data Anda.