Kerangka kerja Qt GUI digunakan untuk membuat antarmuka pengguna di seluruh platform. Kerangka kerja ini ditulis dalam C++ tetapi pustaka PyQt5 memungkinkannya untuk diimpor dan digunakan langsung dengan Python. Kemudahan penggunaannya menjadikannya salah satu aplikasi paling populer untuk membuat GUI dengan Python Show PyQt5 memiliki banyak kegunaan dalam visualisasi data dengan Python, salah satunya adalah plot interaktif yang dibuat di matplotlib. Plot interaktif memungkinkan komunikasi data yang lebih kompleks dengan cara yang efektif. Pada artikel ini, saya akan mendemonstrasikan cara membuat plot gelembung interaktif sehingga pengguna dapat menyelami data Persyaratan sistem Saya menggunakan JupyterNotebook, tetapi IDE apa pun juga dapat digunakan. Matplotlib hanya dapat diintegrasikan dengan PyQt5 jika versinya adalah notebook matplotlib yang memungkinkan plot interaktif Di Jupyter Notebook baris. %matplotlib notebook perlu dijalankan untuk mengubah preset karena %matplotlib inline tidak mengizinkan plot interaktif. Jika IDE sedang digunakan notebook matplotlib adalah pengaturan otomatis Langkah 1. Buat Bagan Gelembung Dataset yang akan saya gunakan adalah The World Factbook 2020 yang diterbitkan setiap tahun oleh CIA. Kumpulan data berisi informasi umum tentang masyarakat, ekonomi, dan pemerintahan setiap negara di dunia Itu dapat diunduh di sini https. // www. cia. gov/the-world-factbook/about/archives/download/factbook-2020. zip Variabel yang digunakan dari dataset ini adalah
Impor Perpustakaan from matplotlib import pyplot as plt Pembersihan Data Beberapa pembersihan data dan augmentasi data perlu diterapkan ke setiap variabel sebelum dapat digunakan dalam grafik Variabel X. PDB per Kapita saat ini berupa string yang menyertakan koma dan simbol dolar yang keduanya harus dihapus untuk mengonversi string menjadi nilai integer df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_ Variabel Y. Tingkat Kelahiran saat ini merupakan variabel kontinu tetapi karena digunakan untuk rona, ia perlu dibuat menjadi diskrit dengan membuat nampan bi = [] Variabel ukuran. Populasi saat ini berupa string yang terdiri dari koma dan untuk mengonversi ke bilangan bulat, koma harus dihapus df[‘Population (M)’]=(df[‘Population’].str.replace(‘,’,’’)).astype(int) Seaborn, pustaka visualisasi data yang dibangun di atas matplotlib, akan digunakan untuk membuat bagan gelembung ini. Pustaka matplotlib tradisional juga dapat digunakan bubble = sns.scatterplot(data=df, x=”GDP per Capita”, y=”Life expectancy at birth”, size=”Population (M)”, hue=”Birth Rate”, legend= True, sizes=(10, 300)) _Tambahkan legenda untuk ukuran dan warna, dan tunjukkan plotnya bubble.legend() Grafik awal ini menunjukkan hubungan antara keempat variabel dengan jelas. Mencoba menambahkan variabel tambahan akan membuat visualisasi membingungkan, namun masih ada lima variabel lain dalam dataset ini. Dengan membuat visualisasi menjadi interaktif, pengguna dapat menyelam lebih jauh ke dalam data dengan melihat bagaimana berbagai variabel berinteraksi satu sama lain Langkah 2. Siapkan PyQt5 Gunakan pernyataan impor di bawah untuk mengunduh semua pustaka dan dependensi untuk PyQt5 from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QVBoxLayout, QLabel, QComboBox, QSlider _Buat kelas dan konstruktor untuk memulai. Kemudian atur geometri (tentukan apa itu geometri) dari jendela popup. Saya memilih untuk melakukan (400.400.900.900) karena ini yang saya yakini cukup besar bagi pengguna untuk menangkap detail dari plot. Parameter untuk setGeometry® adalah x, y, width, dan height class Window(QDialog): Langkah 3. Tambahkan Widget di Konstruktor Gawit 1. FigureCanvas Widget gambar digunakan untuk menampilkan grafik dalam visualisasi self.figure = plt.figure() _Wiget 2. QComboBox Tambahkan kode di konstruktor untuk setiap ComboBox. Kode di bawah ini untuk yang pertama saya beri nama xComboBox untuk menangkap input pengguna untuk variabel yang digunakan untuk sumbu x. Pertama, inisialisasi dan beri nama ComboBox self.xComboBox = QComboBox(self) _Untuk menambahkan item ke dalam ComboBox. addItems() digunakan dengan daftar yang menyertakan opsi. Dalam hal ini, semua nama kolom ditambahkan sebagai pilihan di ComboBox df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_0 Wiget 3. QLabel Label perlu dibuat untuk memungkinkan pengguna mengetahui widget lain akan digunakan untuk apa. Dalam hal ini, ini akan memungkinkan pengguna untuk mengetahui untuk apa nilai-nilai dalam ComboBox akan digunakan df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_1 Label yang dibuat perlu ditautkan ke ComboBox untuk menjadikannya satu objek gabungan df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_2 Wiget 4. QSlider Penggeser digunakan untuk memungkinkan pengguna menyesuaikan nilai dalam visualisasi. Widget dalam PyQt5 adalah QSlider yang memiliki parameter orientasi yang diperlukan yang dapat berupa Qt. Horisontal atau Qt. Vertikal. Dalam hal ini, orientasi horizontal adalah yang paling menarik secara visual. Dalam visualisasi ini, penggeser akan mengubah variabel ukuran sehingga pengguna dapat menambah atau mengurangi gelembung untuk menentukan ukuran terbaik untuk visibilitas. (Lihat ini lagi) df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_3 Geometri penggeser perlu disesuaikan agar sesuai dengan jendela GUI. Argumen untuk setGeometri sama seperti di atas, x, y, lebar, dan tinggi df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_4 Fungsi perlu ditautkan ke penggeser untuk memanfaatkan nilainya dalam visualisasi. Pertama,. valueChanged[int] perlu digunakan untuk mendapatkan nilai saat ini berdasarkan posisi slider. connect() dengan nama fungsi yang akan digunakan. Fungsi yang digunakan juga akan digunakan di widget tombol di bawah ini dan akan dibahas di bagian ini df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_5 Gawit 5. Tombol Gunakan QPushButton untuk membuat widget tombol. Parameter dalam fungsi ini adalah nama tombol yang diteruskan sebagai string. Nama tombolnya adalah "Plot Current Attributes" dan setiap kali pengguna mengubah nilai slider atau nilai ComboBox, tombol ini harus ditekan untuk memperbarui grafik. Juga perlu ada fungsi yang terhubung ke tombol untuk memprogram tindakan yang sedang dilakukan saat ditekan. Saya membuat fungsi bernama changeValue yang digunakan untuk tombol dan penggeser df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_6 ubahNilai. Fungsi Slider dan Tombol Widget tombol dan penggeser perlu dihubungkan ke suatu fungsi untuk memanfaatkan nilainya dalam visualisasi. Fungsi changeValue yang saya buat dapat digunakan untuk tombol dan penggeser. Ini dimungkinkan dengan parameter *args yang memungkinkan sejumlah parameter dilewatkan. Untuk tombol, tidak ada parameter yang akan diteruskan saat memanggil fungsi, tetapi untuk penggeser, nilai posisi akan diteruskan. Fungsi ini berada di luar konstruktor df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_7 Ambil semua nilai widget comboBox saat ini yang akan digunakan untuk scatterplot df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_8 Kosongkan plot saat ini dan buat subplot baru df = pd.read_csv(“factbook.csv”)df[“GDP per Capita”] = df[“GDP per capita”].str.replace(‘,’,’’).str.replace(‘$’,’’).astype(float).astype(int)_9 Sesuaikan variabel ukuran dan warna. Variabel ukuran perlu dinormalisasi agar gelembung memiliki ukuran yang tepat bi = [] 0Variabel warna perlu dibuat diskrit bi = [] 1Setelah pengguna memilih nilai baru dari Kotak Kombo, setel ukuran baru dengan penggeser dan data baru disesuaikan, plot pencar dapat dibuat bi = [] 2Buat label khusus untuk legenda warna dan ukuran. Matplotlib menambahkan label secara otomatis, namun untuk variabel warna, rentang harus ditampilkan. Label otomatis hanya akan memberi label warna dari 1 hingga n, n adalah jumlah warna. Untuk ukuran, kami menormalkan data sehingga label otomatis akan ditampilkan dan kami ingin data sebenarnya dalam legenda. Ini adalah langkah opsional, jika data tidak diubah, tidak perlu melakukan ini karena label otomatis sudah benar bi = [] _3Tambahkan legenda dengan label khusus dan format grafik. Ukuran grafik perlu diubah ukurannya agar legenda pas di luar grafik. Ini dilakukan dengan mengurangi tinggi dan lebar sebesar 10% dan memindahkan posisi y0 sedikit ke atas sehingga legenda warna dapat berada di bagian bawah grafik dan legenda ukuran di sisi kanan bi = [] _4Gambar grafik baru dengan widget gambar bi = [] 5Langkah 4. Memformat Widget Setelah semua widget dibuat, mereka perlu diformat. PyQt5 memiliki banyak tata letak yang berbeda, saya memilih untuk menggunakan QVBoxLayout(). Ini mengatur widget dalam kotak vertikal. Ada juga QHBoxLayout() yang mengatur widget dalam kotak horizontal, QGridLayout() mengatur widget dalam format grid dan QFormLayout() yang mengatur widget dalam dua kolom Setiap widget dapat ditambahkan ke tata letak satu demi satu dan akan ditumpuk satu sama lain. Terakhir, setelah semua widget berada di tata letak, widget harus disetel sendiri. setLayout(LayoutName) nama layout saya adalah grid. Nama apa pun dapat digunakan, tetapi ini menginisialisasi objek tata letak dan perlu dipanggil untuk menambahkan widget ke tata letak spesifik tersebut bi = [] 6Langkah 5. Metode Utama Metode main membuat instance kelas dan mengulang tanpa batas untuk mendapatkan perubahan apa pun yang dilakukan pada visualisasi bi = [] 7Hasil Akhir Ringkasan Gabungkan semua langkah di atas untuk mendapatkan plot gelembung interaktif Anda. Saat fungsi dijalankan, GUI akan muncul di jendela terpisah. Kode lengkapnya ditautkan di bawah ini. Meskipun ini adalah contoh sederhana, PyQt5 dapat diintegrasikan ke dalam visualisasi matplotlib apa pun. Ini memungkinkan visualisasi dibuat yang menambahkan lapisan kedalaman dan informasi yang tidak dicapai dengan laporan umum atau visualisasi statis. Lagi pula, sebuah gambar bernilai seribu kata Kode lengkap dapat ditemukan di sini. https. //github. com/kruthik109/Data-Visualisasi/blob/main/Interactive-Bubble-Plot/widgets. py Sumber Badan Intelijen Pusat. (2020, 6 April). Buku Fakta Dunia 2020. Badan Intelijen Pusat. Diakses 22 Februari 2022, dari https. // www. cia. gov/the-world-factbook/about/archives/ Apa itu bagan gelembung di Python?Bagan gelembung menampilkan data sebagai kumpulan lingkaran . Data yang diperlukan untuk membuat bagan gelembung harus memiliki koordinat xy, ukuran gelembung, dan warna gelembung. Warna dapat disediakan oleh perpustakaan itu sendiri.
Bagaimana Anda merencanakan bagan gelembung?Untuk membuat bagan gelembung, susun data Anda dalam baris atau kolom pada lembar kerja sehingga nilai x dicantumkan di baris atau kolom pertama dan nilai y yang sesuai serta nilai ukuran gelembung (z) dicantumkan di baris atau kolom yang berdekatan. Misalnya, atur data lembar kerja Anda seperti yang ditunjukkan pada gambar berikut
Apa yang bisa saya gunakan sebagai pengganti bagan gelembung?Peta ubin dapat dianggap sebagai alternatif dari peta gelembung atau peta choropleth. Mereka sering digunakan untuk membandingkan data antara, misalnya, wilayah yang berbeda di suatu negara.
Apa tujuan dari grafik gelembung?Bagan gelembung terutama digunakan untuk menggambarkan dan menunjukkan hubungan antara variabel numerik . Mereka adalah alat yang hebat untuk membangun hubungan antara variabel dan memeriksa hubungan antara indikator bisnis utama, seperti biaya, nilai, dan risiko. |