Matplotlib - Panduan Cepat
Matplotlib adalah salah satu paket Python paling populer yang digunakan untuk visualisasi data. Ini adalah perpustakaan lintas platform untuk membuat plot 2D dari data dalam array. Matplotlib ditulis dengan Python dan menggunakan NumPy, ekstensi matematika numerik dari Python. Ini menyediakan API berorientasi objek yang membantu dalam menanamkan plot dalam aplikasi menggunakan toolkit GUI Python seperti PyQt, WxPythonotTkinter. Ini dapat digunakan dalam shell Python dan IPython, notebook Jupyter dan server aplikasi web juga.
Matplotlib memiliki antarmuka prosedural bernama Pylab, yang dirancang menyerupai MATLAB, bahasa pemrograman berpemilik yang dikembangkan oleh MathWorks. Matplotlib bersama dengan NumPy dapat dianggap sebagai sumber terbuka yang setara dengan MATLAB.
Matplotlib aslinya ditulis oleh John D. Hunter pada tahun 2003. Versi stabil saat ini adalah 2.2.0 yang dirilis pada Januari 2018.
Matplotlib dan paket dependensinya tersedia dalam bentuk paket roda pada repositori paket Python standar dan dapat diinstal pada sistem Windows, Linux, serta MacOS menggunakan manajer paket pip.
pip3 install matplotlib
Jika versi Python 2.7 atau 3.4 tidak diinstal untuk semua pengguna, paket yang dapat didistribusikan ulang Microsoft Visual C ++ 2008 (64 bit atau 32 bit untuk Python 2.7) atau Microsoft Visual C ++ 2010 (64 bit atau 32 bit untuk Python 3.4) perlu diinstal.
Jika Anda menggunakan Python 2.7 di Mac, jalankan perintah berikut -
xcode-select –install
Setelah menjalankan perintah di atas, subprocess32 - sebuah ketergantungan, dapat dikompilasi.
Pada versi Linux dan Python 2.7 yang sangat lama, Anda mungkin perlu menginstal versi master dari subprocess32.
Matplotlib membutuhkan banyak dependensi -
- Python (> = 2.7 atau> = 3.4)
- NumPy
- setuptools
- dateutil
- pyparsing
- libpng
- pytz
- FreeType
- cycler
- six
Secara opsional, Anda juga dapat menginstal sejumlah paket untuk mengaktifkan perangkat antarmuka pengguna yang lebih baik.
- tk
- PyQt4
- PyQt5
- pygtk
- wxpython
- pycairo
- Tornado
Untuk dukungan yang lebih baik dari format keluaran animasi dan format file gambar, LaTeX, dll., Anda dapat menginstal yang berikut ini -
- _mpeg/avconv
- ImageMagick
- Bantal (> = 2.0)
- LaTeX dan GhostScript (untuk merender teks dengan LaTeX).
- LaTeX dan GhostScript (untuk merender teks dengan LaTeX).
Anaconda adalah distribusi sumber terbuka dan gratis dari bahasa pemrograman Python dan R untuk pemrosesan data skala besar, analitik prediktif, dan komputasi ilmiah. Distribusi membuat pengelolaan dan penerapan paket menjadi sederhana dan mudah. Matplotlib dan banyak alat sains (data) berguna lainnya merupakan bagian dari distribusi. Versi paket dikelola oleh sistem manajemen paket Conda. Keuntungan Anaconda adalah Anda memiliki akses ke lebih dari 720 paket yang dapat dengan mudah diinstal dengan Anaconda's Conda, sebuah paket, ketergantungan, dan pengelola lingkungan.
Distribusi anaconda tersedia untuk dipasang di https://www.anaconda.com/download/. Untuk penginstalan di Windows, tersedia binari 32 dan 64 bit -
https://repo.continuum.io/archive/Anaconda3-5.1.0-Windows-x86.exe
https://repo.continuum.io/archive/Anaconda3-5.1.0-Windows-x86_64.exe
Instalasi adalah proses berbasis wizard yang cukup mudah. Anda dapat memilih antara menambahkan Anaconda dalam variabel PATH dan mendaftarkan Anaconda sebagai Python default Anda.
Untuk instalasi di Linux, unduh penginstal untuk penginstal 32 bit dan 64 bit dari halaman unduhan -
https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86.sh
https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
Sekarang, jalankan perintah berikut dari terminal Linux -
$ bash Anaconda3-5.0.1-Linux-x86_64.sh
Canopy dan ActiveState adalah pilihan yang paling dicari untuk Windows, macOS, dan platform Linux umum. Pengguna Windows dapat menemukan opsi di WinPython.
Jupyter adalah akronim longgar yang berarti Julia, Python, dan R. Bahasa pemrograman ini adalah bahasa target pertama aplikasi Jupyter, tetapi saat ini, teknologi notebook juga mendukung banyak bahasa lain.
Pada tahun 2001, Fernando Pérez mulai mengembangkan Ipython. IPython adalah shell perintah untuk komputasi interaktif dalam berbagai bahasa pemrograman, awalnya dikembangkan untuk Python.
Pertimbangkan fitur-fitur berikut yang disediakan oleh IPython -
Kerang interaktif (terminal dan berbasis Qt).
Buku catatan berbasis browser dengan dukungan untuk kode, teks, ekspresi matematika, plot sebaris, dan media lainnya.
Dukungan untuk visualisasi data interaktif dan penggunaan toolkit GUI.
Penerjemah yang fleksibel dan dapat disematkan untuk dimuat ke dalam proyek Anda sendiri.
Pada tahun 2014, Fernando Pérez mengumumkan proyek spin-off dari IPython yang disebut Proyek Jupyter. IPython akan tetap ada sebagai shell Python dan kernel untuk Jupyter, sedangkan notebook dan bagian lain dari IPython akan berpindah dengan nama Jupyter. Jupyter menambahkan dukungan untuk Julia, R, Haskell dan Ruby.
Untuk memulai notebook Jupyter, buka navigator Anaconda (antarmuka pengguna grafis desktop yang disertakan dalam Anaconda yang memungkinkan Anda meluncurkan aplikasi dan dengan mudah mengelola paket, lingkungan, dan saluran Conda tanpa perlu menggunakan perintah baris perintah).
Navigator menampilkan komponen yang diinstal dalam distribusi.
Luncurkan Notebook Jupyter dari Navigator -
Anda akan melihat pembukaan aplikasi di browser web di alamat berikut - http://localhost:8888.
Anda mungkin ingin memulai dengan membuat buku catatan baru. Anda dapat dengan mudah melakukannya dengan mengklik "tombol Baru" di "tab File". Anda melihat bahwa Anda memiliki opsi untuk membuat file teks biasa, folder, dan terminal. Terakhir, Anda juga akan melihat opsi untuk membuat notebook Python 3.
Buku catatan baru tanpa judul dengan .ipynbekstensi (singkatan dari notebook IPython) ditampilkan di tab baru browser.
matplotlib.pyplotadalah kumpulan fungsi gaya perintah yang membuat Matplotlib berfungsi seperti MATLAB. Setiap fungsi Pyplot membuat beberapa perubahan pada gambar. Misalnya, fungsi membuat gambar, area plot dalam gambar, plot beberapa garis di area plotting, menghiasi plot dengan label, dll.
Jenis Plot
Sr Tidak | Deskripsi fungsi |
---|---|
1 | Bar Buatlah plot batang. |
2 | Barh Buat plot batang horizontal. |
3 | Boxplot Buatlah plot kotak dan kumis. |
4 | Hist Buat plot histogram. |
5 | hist2d Buat plot histogram 2D. |
6 | Pie Buat grafik pai. |
7 | Plot Plot garis dan / atau penanda ke Sumbu. |
8 | Polar Buat plot kutub .. |
9 | Scatter Buatlah plot sebar dari x vs y. |
10 | Stackplot Menggambar plot area bertumpuk. |
11 | Stem Buat plot batang. |
12 | Step Buat plot langkah. |
13 | Quiver Plot bidang panah 2-D. |
Fungsi Gambar
Sr Tidak | Deskripsi fungsi |
---|---|
1 | Imread Membaca gambar dari file menjadi array. |
2 | Imsave Simpan array seperti pada file gambar. |
3 | Imshow Tampilkan gambar di sumbu. |
Fungsi Sumbu
Sr Tidak | Deskripsi fungsi |
---|---|
1 | Axes Tambahkan sumbu ke gambar. |
2 | Text Tambahkan teks ke sumbu. |
3 | Title Tetapkan judul sumbu saat ini. |
4 | Xlabel Tetapkan label sumbu x dari sumbu saat ini. |
5 | Xlim Dapatkan atau setel batas x sumbu saat ini. |
6 | Xscale . |
7 | Xticks Dapatkan atau setel batas x dari lokasi centang dan label saat ini. |
8 | Ylabel Atur label sumbu y dari sumbu saat ini. |
9 | Ylim Dapatkan atau setel batas y dari sumbu saat ini. |
10 | Yscale Atur skala sumbu y. |
11 | Yticks Dapatkan atau setel batas y dari lokasi centang dan label saat ini. |
Fungsi Gambar
Sr Tidak | Deskripsi fungsi |
---|---|
1 | Figtext Tambahkan teks ke gambar. |
2 | Figure Menciptakan sosok baru. |
3 | Show Peragakan gambar. |
4 | Savefig Simpan gambar saat ini. |
5 | Close Tutup jendela gambar. |
Pada bab ini, kita akan mempelajari cara membuat plot sederhana dengan Matplotlib.
Sekarang kita akan menampilkan plot garis sederhana dari sudut dalam radian vs. nilai sinusnya di Matplotlib. Pertama-tama, modul Pyplot dari paket Matplotlib diimpor, dengan alias plt sesuai ketentuan.
import matplotlib.pyplot as plt
Selanjutnya kita membutuhkan larik angka untuk dipetakan. Berbagai fungsi array didefinisikan di pustaka NumPy yang diimpor dengan alias np.
import numpy as np
Kita sekarang mendapatkan objek ndarray sudut antara 0 dan 2π menggunakan fungsi arange () dari perpustakaan NumPy.
x = np.arange(0, math.pi*2, 0.05)
Objek ndarray berfungsi sebagai nilai pada sumbu x dari grafik. Nilai sinus yang sesuai dari sudut dalam x untuk ditampilkan pada sumbu y diperoleh dengan pernyataan berikut -
y = np.sin(x)
Nilai dari dua larik diplot menggunakan fungsi plot ().
plt.plot(x,y)
Anda dapat mengatur judul plot, dan label untuk sumbu x dan y.
You can set the plot title, and labels for x and y axes.
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')
Jendela Plot viewer dipanggil oleh fungsi show () -
plt.show()
Program lengkapnya adalah sebagai berikut -
from matplotlib import pyplot as plt
import numpy as np
import math #needed for definition of pi
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')
plt.show()
Ketika baris kode di atas dijalankan, grafik berikut ini ditampilkan -
Sekarang, gunakan notebook Jupyter dengan Matplotlib.
Luncurkan notebook Jupyter dari navigator Anaconda atau baris perintah seperti yang dijelaskan sebelumnya. Di sel input, masukkan pernyataan impor untuk Pyplot dan NumPy -
from matplotlib import pyplot as plt
import numpy as np
Untuk menampilkan output plot di dalam notebook itu sendiri (dan bukan di penampil terpisah), masukkan pernyataan ajaib berikut -
%matplotlib inline
Dapatkan x sebagai objek ndarray yang berisi sudut dalam radian antara 0 sampai 2π, dan y sebagai nilai sinus dari setiap sudut -
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
Tetapkan label untuk sumbu x dan y serta judul plot -
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')
Terakhir, jalankan fungsi plot () untuk menghasilkan tampilan gelombang sinus di notebook (tidak perlu menjalankan fungsi show ()) -
plt.plot(x,y)
Setelah eksekusi baris terakhir kode, output berikut ditampilkan -
PyLab adalah antarmuka prosedural ke pustaka plot berorientasi objek Matplotlib. Matplotlib adalah keseluruhan paket; matplotlib.pyplot adalah modul di Matplotlib; dan PyLab adalah modul yang diinstal bersama Matplotlib.
PyLab adalah modul praktis yang mengimpor matplotlib.pyplot (untuk plotting) dan NumPy (untuk Matematika dan bekerja dengan array) secara massal dalam satu ruang nama. Meskipun banyak contoh menggunakan PyLab, ini tidak lagi direkomendasikan.
Plotting Dasar
Kurva plot dilakukan dengan perintah plot. Dibutuhkan sepasang array dengan panjang yang sama (atau urutan) -
from numpy import *
from pylab import *
x = linspace(-3, 3, 30)
y = x**2
plot(x, y)
show()
Baris kode di atas menghasilkan output berikut -
Untuk memplot simbol daripada garis, berikan argumen string tambahan.
simbol | -, -, -.,,. ,,, o, ^, v, <,>, s, +, x, D, d, 1, 2, 3, 4, h, H, p, | , _ |
warna | b, g, r, c, m, y, k, w |
Sekarang, pertimbangkan untuk menjalankan kode berikut -
from pylab import *
x = linspace(-3, 3, 30)
y = x**2
plot(x, y, 'r.')
show()
Ini memplot titik-titik merah seperti yang ditunjukkan di bawah ini -
Plot bisa dilapisi. Cukup gunakan beberapa perintah plot. Gunakan clf () untuk membersihkan plot.
from pylab import *
plot(x, sin(x))
plot(x, cos(x), 'r-')
plot(x, -sin(x), 'g--')
show()
Baris kode di atas menghasilkan output berikut -
Meskipun mudah untuk membuat plot dengan cepat menggunakan matplotlib.pyplotmodul, penggunaan pendekatan berorientasi objek direkomendasikan karena memberikan lebih banyak kontrol dan penyesuaian plot Anda. Sebagian besar fungsi juga tersedia di filematplotlib.axes.Axes kelas.
Ide utama di balik penggunaan metode berorientasi objek yang lebih formal adalah membuat objek figur dan kemudian memanggil metode atau atribut dari objek itu. Pendekatan ini membantu lebih baik dalam menangani kanvas yang memiliki banyak plot di atasnya.
Dalam antarmuka berorientasi objek, Pyplot hanya digunakan untuk beberapa fungsi seperti pembuatan gambar, dan pengguna secara eksplisit membuat dan melacak objek gambar dan sumbu. Pada level ini, pengguna menggunakan Pyplot untuk membuat gambar, dan melalui gambar tersebut, satu atau lebih objek sumbu dapat dibuat. Objek sumbu ini kemudian digunakan untuk sebagian besar tindakan merencanakan.
Untuk memulainya, kami membuat instance figur yang menyediakan kanvas kosong.
fig = plt.figure()
Sekarang tambahkan sumbu ke gambar. Ituadd_axes()Metode membutuhkan objek daftar dari 4 elemen yang sesuai dengan kiri, bawah, lebar dan tinggi gambar. Setiap angka harus antara 0 dan 1 -
ax=fig.add_axes([0,0,1,1])
Tetapkan label untuk sumbu x dan y serta judul -
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
Panggil metode plot () dari objek sumbu.
ax.plot(x,y)
Jika Anda menggunakan notebook Jupyter, perintah inline% matplotlib harus dikeluarkan; fungsi otherwistshow () dari modul pyplot menampilkan plot.
Pertimbangkan untuk menjalankan kode berikut -
from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()
Keluaran
Baris kode di atas menghasilkan output berikut -
Kode yang sama saat dijalankan di notebook Jupyter menunjukkan output seperti yang ditunjukkan di bawah ini -
Itu matplotlib.figuremodul berisi kelas Gambar. Ini adalah penampung tingkat atas untuk semua elemen plot. Objek Gambar dibuat instance-nya dengan memanggilfigure() fungsi dari modul pyplot -
fig = plt.figure()
Tabel berikut menunjukkan parameter tambahan -
Figsize | (lebar, tinggi) tupel dalam inci |
Dpi | Titik per inci |
Warna wajah | Gambar patch facecolor |
Edgecolor | Gambar warna tepi tambalan |
Linewidth | Lebar garis tepi |
Objek sumbu merupakan wilayah citra dengan ruang data. Gambar tertentu dapat berisi banyak Sumbu, tetapi objek Sumbu tertentu hanya dapat berada dalam satu Gambar. Sumbu berisi dua (atau tiga dalam kasus 3D) objek Sumbu. Kelas Axes dan fungsi anggotanya adalah titik masuk utama untuk bekerja dengan antarmuka OO.
Objek sumbu ditambahkan ke gambar dengan memanggil metode add_axes (). Ini mengembalikan objek sumbu dan menambahkan sumbu pada posisi persegi [kiri, bawah, lebar, tinggi] di mana semua kuantitas dalam pecahan dari lebar dan tinggi gambar.
Parameter
Berikut adalah parameter untuk kelas Axes -
rect - Sebuah urutan 4 panjang kuantitas [kiri, bawah, lebar, tinggi].
ax=fig.add_axes([0,0,1,1])
Fungsi anggota kelas sumbu berikut menambahkan elemen yang berbeda ke plot -
Legenda
Itu legend()metode kelas sumbu menambahkan legenda ke gambar plot. Dibutuhkan tiga parameter -
ax.legend(handles, labels, loc)
Dimana label adalah urutan string dan menangani urutan instance Line2D atau Patch. loc bisa berupa string atau integer yang menentukan lokasi legenda.
String lokasi | Kode lokasi |
---|---|
Terbaik | 0 |
pojok kanan atas | 1 |
kiri atas | 2 |
kiri bawah | 3 |
kanan bawah | 4 |
Baik | 5 |
Kiri tengah | 6 |
Kanan tengah | 7 |
tengah bawah | 8 |
tengah atas | 9 |
Pusat | 10 |
axes.plot ()
Ini adalah metode dasar kelas sumbu yang memplot nilai dari satu larik versus larik lainnya sebagai garis atau penanda. Metode plot () bisa memiliki argumen string format opsional untuk menentukan warna, gaya dan ukuran garis dan penanda.
Kode warna
Karakter | Warna |
---|---|
'b' | Biru |
'g' | hijau |
'r' | Merah |
'b' | Biru |
'c' | Cyan |
'm' | Magenta |
'y' | Kuning |
'k' | Hitam |
'b' | Biru |
'w' | putih |
Kode penanda
Karakter | Deskripsi |
---|---|
'.' | Penanda titik |
'Hai' | Penanda lingkaran |
'x' | Penanda X |
'D' | Spidol berlian |
'H' | Penanda segi enam |
's' | Penanda persegi |
'+' | Tanda tambah |
Gaya garis
Karakter | Deskripsi |
---|---|
'-' | Garis utuh |
'-' | Garis putus-putus |
'-.' | Garis putus-putus |
':' | Garis putus-putus |
'H' | Penanda segi enam |
Contoh berikut menunjukkan angka-angka pengeluaran iklan dan penjualan TV dan smartphone dalam bentuk plot garis. Garis yang mewakili TV adalah garis solid dengan warna kuning dan penanda persegi sedangkan garis smartphone adalah garis putus-putus dengan warna hijau dan penanda lingkaran.
import matplotlib.pyplot as plt
y = [1, 4, 9, 16, 25,36,49, 64]
x1 = [1, 16, 30, 42,55, 68, 77,88]
x2 = [1,6,12,18,28, 40, 52, 65]
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
l1 = ax.plot(x1,y,'ys-') # solid line with yellow colour and square marker
l2 = ax.plot(x2,y,'go--') # dash line with green colour and circle marker
ax.legend(labels = ('tv', 'Smartphone'), loc = 'lower right') # legend placed at lower right
ax.set_title("Advertisement effect on sales")
ax.set_xlabel('medium')
ax.set_ylabel('sales')
plt.show()
Ketika baris kode di atas dijalankan, menghasilkan plot berikut -
Di bab ini, kita akan belajar cara membuat banyak subplot di kanvas yang sama.
Itu subplot()fungsi mengembalikan objek sumbu pada posisi kisi tertentu. Tanda tangan panggilan dari fungsi ini adalah -
plt.subplot(subplot(nrows, ncols, index)
Dalam gambar saat ini, fungsi membuat dan mengembalikan objek Sumbu, pada indeks posisi dari kisi-kisi nrows oleh ncolsax. Indeks pergi dari 1 ke nrows * ncols, bertambah dalam urutan baris-mayor. Jikanrows, ncols dan indeks semuanya kurang dari 10. Indeks juga dapat diberikan sebagai satu digit, bersambung, tiga digit.
Misalnya, subplot (2, 3, 3) dan subplot (233) keduanya membuat Sumbu di sudut kanan atas gambar saat ini, menempati setengah dari tinggi gambar dan sepertiga dari lebar gambar.
Membuat subplot akan menghapus subplot yang sudah ada sebelumnya yang tumpang tindih dengannya di luar pembagian batas.
import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))
Baris kode di atas menghasilkan output berikut -
Fungsi add_subplot () dari kelas gambar tidak akan menimpa plot yang ada -
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])
Ketika baris kode di atas dijalankan, itu menghasilkan output berikut -
Anda dapat menambahkan plot sisipan pada gambar yang sama dengan menambahkan objek sumbu lain di kanvas gambar yang sama.
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()
Setelah mengeksekusi baris kode di atas, output berikut dihasilkan -
Matplotlib'spyplot API memiliki fungsi praktis yang disebut subplots () yang bertindak sebagai pembungkus utilitas dan membantu dalam membuat tata letak subplot yang umum, termasuk objek figur yang melingkupi, dalam satu panggilan.
Plt.subplots(nrows, ncols)
Dua argumen bilangan bulat untuk fungsi ini menentukan jumlah baris dan kolom dari kisi subplot. Fungsi mengembalikan objek gambar dan tupel yang berisi objek sumbu sama dengan nrows * ncols. Setiap objek sumbu dapat diakses oleh indeksnya. Di sini kami membuat subplot dari 2 baris dengan 2 kolom dan menampilkan 4 plot berbeda di setiap subplot.
import matplotlib.pyplot as plt
fig,a = plt.subplots(2,2)
import numpy as np
x = np.arange(1,5)
a[0][0].plot(x,x*x)
a[0][0].set_title('square')
a[0][1].plot(x,np.sqrt(x))
a[0][1].set_title('square root')
a[1][0].plot(x,np.exp(x))
a[1][0].set_title('exp')
a[1][1].plot(x,np.log10(x))
a[1][1].set_title('log')
plt.show()
Baris kode di atas menghasilkan output berikut -
Fungsi ini memberikan lebih banyak fleksibilitas dalam membuat objek sumbu di lokasi grid tertentu. Ini juga memungkinkan objek sumbu direntangkan di beberapa baris atau kolom.
Plt.subplot2grid(shape, location, rowspan, colspan)
Dalam contoh berikut, kisi 3X3 dari objek gambar diisi dengan objek sumbu dengan berbagai ukuran dalam rentang baris dan kolom, masing-masing menampilkan plot yang berbeda.
import matplotlib.pyplot as plt
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x)
a2.set_title('square')
a1.plot(x, np.exp(x))
a1.set_title('exp')
a3.plot(x, np.log(x))
a3.set_title('log')
plt.tight_layout()
plt.show()
Setelah mengeksekusi kode baris di atas, output berikut dihasilkan -
Fungsi grid () dari objek sumbu mengatur visibilitas grid di dalam gambar menjadi aktif atau nonaktif. Anda juga dapat menampilkan tanda kisi mayor / minor (atau keduanya). Selain itu, properti color, linestyle dan linewidth dapat disetel dalam fungsi grid ().
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1,3, figsize = (12,4))
x = np.arange(1,11)
axes[0].plot(x, x**3, 'g',lw=2)
axes[0].grid(True)
axes[0].set_title('default grid')
axes[1].plot(x, np.exp(x), 'r')
axes[1].grid(color='b', ls = '-.', lw = 0.25)
axes[1].set_title('custom grid')
axes[2].plot(x,x)
axes[2].set_title('no grid')
fig.tight_layout()
plt.show()
Terkadang, satu atau beberapa poin jauh lebih besar daripada sebagian besar data. Dalam kasus seperti itu, skala sumbu perlu disetel sebagai logaritmik daripada skala normal. Ini adalah skala Logaritmik. Di Matplotlib, dimungkinkan dengan mengatur properti xscale atau vscale dari objek sumbu ke 'log'.
Terkadang juga diperlukan untuk menunjukkan jarak tambahan antara nomor sumbu dan label sumbu. Properti labelpad dari salah satu sumbu (x atau y atau keduanya) dapat disetel ke nilai yang diinginkan.
Kedua fitur di atas didemonstrasikan dengan bantuan contoh berikut. Anak plot di sebelah kanan memiliki skala logaritmik dan satu di kiri memiliki sumbu x yang memiliki label pada jarak yang lebih jauh.
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1, 2, figsize=(10,4))
x = np.arange(1,5)
axes[0].plot( x, np.exp(x))
axes[0].plot(x,x**2)
axes[0].set_title("Normal scale")
axes[1].plot (x, np.exp(x))
axes[1].plot(x, x**2)
axes[1].set_yscale("log")
axes[1].set_title("Logarithmic scale (y)")
axes[0].set_xlabel("x axis")
axes[0].set_ylabel("y axis")
axes[0].xaxis.labelpad = 10
axes[1].set_xlabel("x axis")
axes[1].set_ylabel("y axis")
plt.show()
Duri sumbu adalah garis yang menghubungkan tanda centang sumbu yang membatasi batas area plot. Objek sumbu memiliki duri yang terletak di atas, bawah, kiri dan kanan.
Setiap tulang belakang dapat diformat dengan menentukan warna dan lebarnya. Tepi mana pun dapat dibuat tidak terlihat jika warnanya diatur ke tidak ada.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.spines['bottom'].set_color('blue')
ax.spines['left'].set_color('red')
ax.spines['left'].set_linewidth(2)
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.plot([1,2,3,4,5])
plt.show()
Matplotlib secara otomatis sampai pada nilai minimum dan maksimum variabel yang akan ditampilkan di sepanjang sumbu x, y (dan z dalam kasus plot 3D) dari sebuah plot. Namun, dimungkinkan untuk menetapkan batasan secara eksplisit dengan menggunakanset_xlim() dan set_ylim() fungsi.
Dalam plot berikut, batas skala otomatis sumbu x dan y ditunjukkan -
import matplotlib.pyplot as plt
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
import numpy as np
x = np.arange(1,10)
a1.plot(x, np.exp(x))
a1.set_title('exp')
plt.show()
Sekarang kita memformat batas pada sumbu x menjadi (0 hingga 10) dan sumbu y (0 hingga 10000) -
import matplotlib.pyplot as plt
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
import numpy as np
x = np.arange(1,10)
a1.plot(x, np.exp(x),'r')
a1.set_title('exp')
a1.set_ylim(0,10000)
a1.set_xlim(0,10)
plt.show()
Kutu adalah penanda yang menunjukkan titik data pada sumbu. Sejauh ini Matplotlib - dalam semua contoh sebelumnya - secara otomatis mengambil alih tugas penspasian titik pada sumbu. Pencari dan pemformat centang default Matplotlib dirancang agar cukup memadai dalam banyak situasi umum. Posisi dan label kutu dapat disebutkan secara eksplisit agar sesuai dengan persyaratan tertentu.
Itu xticks() dan yticks()fungsi mengambil objek daftar sebagai argumen. Elemen dalam daftar menunjukkan posisi pada tindakan terkait di mana tanda centang akan ditampilkan.
ax.set_xticks([2,4,6,8,10])
Metode ini akan menandai titik data pada posisi yang diberikan dengan tanda centang.
Demikian pula, label yang sesuai dengan tanda centang dapat diatur dengan set_xlabels() dan set_ylabels() fungsi masing-masing.
ax.set_xlabels([‘two’, ‘four’,’six’, ‘eight’, ‘ten’])
Ini akan menampilkan label teks di bawah penanda pada sumbu x.
Contoh berikut menunjukkan penggunaan tanda centang dan label.
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
y = np.sin(x)
ax.plot(x, y)
ax.set_xlabel(‘angle’)
ax.set_title('sine')
ax.set_xticks([0,2,4,6])
ax.set_xticklabels(['zero','two','four','six'])
ax.set_yticks([-1,0,1])
plt.show()
Memiliki sumbu x atau y ganda dalam sebuah gambar dianggap berguna. Terlebih lagi, saat memplot kurva dengan unit yang berbeda bersama-sama. Matplotlib mendukung ini dengan fungsi twinxand twiny.
Dalam contoh berikut, plot memiliki sumbu y ganda, satu menunjukkan exp (x) dan yang lainnya menunjukkan log (x) -
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
x = np.arange(1,11)
a1.plot(x,np.exp(x))
a1.set_ylabel('exp')
a2 = a1.twinx()
a2.plot(x, np.log(x),'ro-')
a2.set_ylabel('log')
fig.legend(labels = ('exp','log'),loc='upper left')
plt.show()
Bagan batang atau grafik batang adalah bagan atau grafik yang menyajikan data kategorikal dengan batang persegi panjang dengan tinggi atau panjang yang sebanding dengan nilai yang diwakilinya. Batang dapat diplot secara vertikal atau horizontal.
Grafik batang menunjukkan perbandingan di antara kategori yang berbeda. Satu sumbu diagram menunjukkan kategori tertentu yang dibandingkan, dan sumbu lainnya mewakili nilai yang diukur.
Matplotlib API menyediakan bar()fungsi yang dapat digunakan dalam penggunaan gaya MATLAB serta API berorientasi objek. Tanda tangan fungsi bar () yang akan digunakan dengan objek sumbu adalah sebagai berikut -
ax.bar(x, height, width, bottom, align)
Fungsinya membuat plot batang dengan ukuran persegi panjang yang terikat (x −width = 2; x + width = 2; bottom; bottom + height).
Parameter fungsi adalah -
x | urutan skalar yang mewakili koordinat x batang. sejajarkan kontrol jika x adalah pusat bilah (default) atau tepi kiri. |
tinggi | skalar atau urutan skalar yang mewakili ketinggian batang. |
lebar | skalar atau seperti larik, opsional. lebar batang default 0.8 |
bawah | skalar atau seperti larik, opsional. koordinat y dari batang default Tidak ada. |
meluruskan | {'center', 'edge'}, opsional, default 'center' |
Fungsi mengembalikan objek kontainer Matplotlib dengan semua batang.
Berikut adalah contoh sederhana dari plot batang Matplotlib. Ini menunjukkan jumlah siswa yang terdaftar untuk berbagai kursus yang ditawarkan di sebuah institut.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.bar(langs,students)
plt.show()
Saat membandingkan beberapa kuantitas dan saat mengubah satu variabel, kita mungkin menginginkan diagram batang yang memiliki batang satu warna untuk satu nilai kuantitas.
Kita dapat memplot beberapa grafik batang dengan memainkan ketebalan dan posisi batang. Variabel data berisi tiga rangkaian empat nilai. Skrip berikut akan menunjukkan tiga diagram batang dari empat batang. Batang tersebut akan memiliki ketebalan 0,25 unit. Setiap diagram batang akan bergeser 0,25 unit dari yang sebelumnya. Objek data adalah multidict berisi jumlah mahasiswa yang lulus di tiga cabang perguruan tinggi teknik selama empat tahun terakhir.
import numpy as np
import matplotlib.pyplot as plt
data = [[30, 25, 50, 20],
[40, 23, 51, 17],
[35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)
Bagan batang bertumpuk batang-batang yang mewakili kelompok berbeda di atas satu sama lain. Ketinggian bilah yang dihasilkan menunjukkan hasil gabungan dari grup.
Parameter bawah opsional dari pyplot.bar()fungsi memungkinkan Anda untuk menentukan nilai awal untuk sebuah bar. Alih-alih menjalankan dari nol ke nilai, itu akan pergi dari bawah ke nilai. Panggilan pertama ke pyplot.bar () memplot bilah biru. Panggilan kedua ke pyplot.bar () memplot bilah merah, dengan bagian bawah bilah biru berada di atas bilah merah.
import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N) # the x locations for the groups
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width,bottom=menMeans, color='b')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()
Histogram adalah representasi akurat dari distribusi data numerik. Ini adalah perkiraan distribusi probabilitas variabel kontinu. Ini adalah sejenis grafik batang.
Untuk membuat histogram, ikuti langkah-langkah berikut -
- Bin kisaran nilai.
- Bagilah seluruh rentang nilai menjadi serangkaian interval.
- Hitung berapa banyak nilai yang jatuh ke dalam setiap interval.
Bins biasanya ditentukan sebagai interval variabel yang berurutan dan tidak tumpang tindih.
Itu matplotlib.pyplot.hist()fungsi plot histogram. Ini menghitung dan menggambar histogram x.
Parameter
Tabel berikut mencantumkan parameter untuk histogram -
x | array atau urutan array |
tempat sampah | integer atau sequence atau 'auto', opsional |
parameter opsional | |
jarak | Kisaran bawah dan atas dari nampan. |
massa jenis | Jika True, elemen pertama dari return tuple akan menjadi hitungan yang dinormalisasi untuk membentuk kepadatan probabilitas |
kumulatif | Jika Benar, maka histogram dihitung di mana setiap bin memberikan hitungan dalam bin itu ditambah semua bin untuk nilai yang lebih kecil. |
histtype | Jenis histogram yang akan digambar. Default adalah 'bar'
|
Berikut contoh plot histogram nilai yang diperoleh siswa di suatu kelas. Empat bin, 0-25, 26-50, 51-75, dan 76-100 ditentukan. Histogram menunjukkan jumlah siswa yang termasuk dalam kisaran ini.
from matplotlib import pyplot as plt
import numpy as np
fig,ax = plt.subplots(1,1)
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
ax.hist(a, bins = [0,25,50,75,100])
ax.set_title("histogram of result")
ax.set_xticks([0,25,50,75,100])
ax.set_xlabel('marks')
ax.set_ylabel('no. of students')
plt.show()
Plot muncul seperti yang ditunjukkan di bawah ini -
Bagan Pai hanya dapat menampilkan satu rangkaian data. Bagan pai menunjukkan ukuran item (disebut irisan) dalam satu seri data, sebanding dengan jumlah item. Poin data dalam diagram lingkaran ditampilkan sebagai persentase dari keseluruhan lingkaran.
Matplotlib API memiliki pie()fungsi yang menghasilkan diagram lingkaran yang merepresentasikan data dalam array. Area pecahan setiap irisan diberikan olehx/sum(x). Jika jumlah (x) <1, maka nilai x memberikan luas pecahan secara langsung dan array tidak akan dinormalisasi. Pai yang dihasilkan akan memiliki irisan kosong berukuran 1 - jumlah (x).
Diagram lingkaran terlihat paling baik jika gambar dan sumbu berbentuk persegi, atau aspek Sumbu sama.
Parameter
Tabel berikut mencantumkan parameter untuk diagram lingkaran -
x | seperti larik. Ukuran baji. |
label | daftar. Urutan string yang memberikan label untuk setiap irisan. |
Warna | Urutan matplotlibcolorargs tempat diagram lingkaran akan berputar. Jika Tidak Ada, akan menggunakan warna dalam siklus yang sedang aktif. |
Autopct | string, digunakan untuk memberi label irisan dengan nilai numeriknya. Label akan ditempatkan di dalam irisan. Format stringnya akan menjadi fmt% pct. |
Kode berikut menggunakan fungsi pie () untuk menampilkan diagram lingkaran dari daftar siswa yang terdaftar untuk berbagai kursus bahasa komputer. Persentase proporsional ditampilkan di dalam irisan masing-masing dengan bantuanautopct parameter yang disetel ke% 1.2f%.
from matplotlib import pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.axis('equal')
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.pie(students, labels = langs,autopct='%1.2f%%')
plt.show()
Plot sebar digunakan untuk memplot titik data pada sumbu horizontal dan vertikal dalam upaya menunjukkan seberapa besar satu variabel dipengaruhi oleh variabel lain. Setiap baris dalam tabel data diwakili oleh penanda yang posisinya bergantung pada nilainya di kolom yang ditetapkan pada sumbu X dan Y. Variabel ketiga dapat diatur agar sesuai dengan warna atau ukuran penanda, sehingga menambahkan dimensi lain ke plot.
Skrip di bawah ini menggambarkan diagram sebar rentang nilai vs nilai siswa laki-laki dan perempuan dalam dua warna berbeda.
import matplotlib.pyplot as plt
girls_grades = [89, 90, 70, 89, 100, 80, 90, 100, 80, 34]
boys_grades = [30, 29, 49, 48, 100, 48, 38, 45, 20, 30]
grades_range = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
ax.scatter(grades_range, girls_grades, color='r')
ax.scatter(grades_range, boys_grades, color='b')
ax.set_xlabel('Grades Range')
ax.set_ylabel('Grades Scored')
ax.set_title('scatter plot')
plt.show()
Plot kontur (terkadang disebut Plot Level) adalah cara untuk menunjukkan permukaan tiga dimensi pada bidang dua dimensi. Ini menggambarkan dua variabel prediktor XY pada sumbu y dan variabel respon Z sebagai kontur. Kontur ini terkadang disebut irisan-z atau nilai respons iso.
Sebuah plot kontur cocok jika Anda ingin melihat bagaimana alue Z berubah sebagai fungsi dari dua input X dan Y, sehingga Z = f (X, Y). Garis kontur atau isoline dari fungsi dua variabel adalah kurva di mana fungsi tersebut memiliki nilai konstan.
Variabel independen x dan y biasanya dibatasi pada grid biasa yang disebut meshgrid. Numpy.meshgrid membuat kisi persegi panjang dari larik nilai x dan larik nilai y.
Matplotlib API berisi fungsi contour () dan contourf () yang masing-masing menggambar garis kontur dan kontur yang terisi. Kedua fungsi tersebut membutuhkan tiga parameter x, y dan z.
import numpy as np
import matplotlib.pyplot as plt
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
fig,ax=plt.subplots(1,1)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Filled Contours Plot')
#ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()
Plot quiver menampilkan vektor kecepatan sebagai panah dengan komponen (u, v) pada titik (x, y).
quiver(x,y,u,v)
Perintah di atas memplot vektor sebagai panah pada koordinat yang ditentukan di setiap pasangan elemen yang sesuai di x dan y.
Parameter
Tabel berikut mencantumkan parameter yang berbeda untuk plot Quiver -
x | Array 1D atau 2D, urutan. Koordinat x dari lokasi panah |
y | Array 1D atau 2D, urutan. Koordinat y dari lokasi panah |
u | Array 1D atau 2D, urutan. Komponen x dari vektor panah |
v | Array 1D atau 2D, urutan. Komponen y dari vektor panah |
c | Array 1D atau 2D, urutan. Warna panah |
Kode berikut menggambar plot quiver sederhana -
import matplotlib.pyplot as plt
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)
fig, ax = plt.subplots()
q = ax.quiver(x,y,u,v)
plt.show()
Plot kotak yang juga dikenal sebagai plot kumis menampilkan ringkasan sekumpulan data yang berisi minimum, kuartil pertama, median, kuartil ketiga, dan maksimum. Dalam plot kotak, kami menggambar kotak dari kuartil pertama ke kuartil ketiga. Garis vertikal melewati kotak di median. Kumis bergerak dari setiap kuartil ke minimum atau maksimum.
Mari kita buat data untuk plot kotak. Kami menggunakannumpy.random.normal()berfungsi untuk membuat data palsu. Diperlukan tiga argumen, mean dan deviasi standar dari distribusi normal, dan jumlah nilai yang diinginkan.
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)
Daftar array yang kita buat di atas adalah satu-satunya input yang diperlukan untuk membuat diagram kotak. Menggunakandata_to_plot baris kode, kita dapat membuat boxplot dengan kode berikut -
fig = plt.figure()
# Create an axes instance
ax = fig.add_axes([0,0,1,1])
# Create the boxplot
bp = ax.boxplot(data_to_plot)
plt.show()
Baris kode di atas akan menghasilkan output berikut -
Plot biola mirip dengan plot kotak, hanya saja plot tersebut juga menunjukkan kepadatan probabilitas data pada nilai yang berbeda. Plot ini menyertakan penanda untuk median data dan kotak yang menunjukkan kisaran interkuartil, seperti pada plot kotak standar. Dihamparkan pada plot kotak ini adalah perkiraan kepadatan kernel. Seperti plot kotak, plot biola digunakan untuk mewakili perbandingan distribusi variabel (atau distribusi sampel) di berbagai "kategori".
Plot biola lebih informatif daripada plot kotak biasa. Faktanya, meskipun plot kotak hanya menampilkan statistik ringkasan seperti mean / median dan rentang interkuartil, plot biola menunjukkan distribusi data yang lengkap.
import matplotlib.pyplot as plt
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)
## combine these different collections into a list
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]
# Create a figure instance
fig = plt.figure()
# Create an axes instance
ax = fig.add_axes([0,0,1,1])
# Create the boxplot
bp = ax.violinplot(data_to_plot)
plt.show()
Meskipun Matplotlib pada awalnya dirancang dengan hanya merencanakan dua dimensi, beberapa utilitas plotting tiga dimensi dibangun di atas tampilan dua dimensi Matplotlib di versi yang lebih baru, untuk menyediakan seperangkat alat untuk visualisasi data tiga dimensi. Plot tiga dimensi diaktifkan dengan mengimpormplot3d toolkit, disertakan dengan paket Matplotlib.
Sumbu tiga dimensi dapat dibuat dengan meneruskan kata kunci projection = '3d' ke salah satu rutinitas pembuatan sumbu normal.
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)
ax.plot3D(x, y, z, 'gray')
ax.set_title('3D line plot')
plt.show()
Sekarang kita dapat memplot berbagai jenis plot tiga dimensi. Plot tiga dimensi yang paling dasar adalah a3D line plotdibuat dari set (x, y, z) tripel. Ini dapat dibuat menggunakan fungsi ax.plot3D.
3D scatter plot dibuat dengan menggunakan ax.scatter3D fungsi.
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)
c = x + y
ax.scatter(x, y, z, c=c)
ax.set_title('3d Scatter plot')
plt.show()
Itu ax.contour3D()fungsi membuat plot kontur tiga dimensi. Ini membutuhkan semua data input dalam bentuk grid reguler dua dimensi, dengan Z-data dievaluasi di setiap titik. Di sini, kami akan menunjukkan diagram kontur tiga dimensi dari fungsi sinusoidal tiga dimensi.
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
return np.sin(np.sqrt(x ** 2 + y ** 2))
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.set_title('3D contour')
plt.show()
Plot wireframe mengambil grid nilai dan memproyeksikannya ke permukaan tiga dimensi yang ditentukan, dan dapat membuat bentuk tiga dimensi yang dihasilkan cukup mudah untuk divisualisasikan. Ituplot_wireframe() fungsi digunakan untuk tujuan -
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
return np.sin(np.sqrt(x ** 2 + y ** 2))
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_wireframe(X, Y, Z, color='black')
ax.set_title('wireframe')
plt.show()
Baris kode di atas akan menghasilkan output berikut -
Plot permukaan menunjukkan hubungan fungsional antara variabel dependen yang ditunjuk (Y), dan dua variabel independen (X dan Z). Plot adalah plot pendamping dari plot kontur. Plot permukaan seperti plot wireframe, tetapi setiap permukaan wireframe adalah poligon yang terisi. Ini dapat membantu persepsi topologi permukaan yang divisualisasikan. Ituplot_surface() fungsi x, y dan z sebagai argumen.
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(x, y, z,cmap='viridis', edgecolor='none')
ax.set_title('Surface plot')
plt.show()
Baris kode di atas akan menghasilkan output berikut -
Matplotlib memiliki dukungan teks yang luas, termasuk dukungan untuk ekspresi matematika, TrueTypedukungan untuk keluaran raster dan vektor, teks yang dipisahkan baris baru dengan rotasi arbitrer, dan dukungan unicode. Matplotlib menyertakan matplotlib.font_managernya sendiri yang mengimplementasikan lintas platform, algoritme pencarian font yang sesuai dengan W3C.
Pengguna memiliki banyak kendali atas properti teks (ukuran font, berat font, lokasi dan warna teks, dll.). Matplotlib mengimplementasikan sejumlah besar simbol dan perintah matematika TeX.
Daftar perintah berikut digunakan untuk membuat teks di antarmuka Pyplot -
teks | Tambahkan teks di lokasi sembarang Sumbu. |
membubuhi keterangan | Tambahkan anotasi, dengan panah opsional, di lokasi arbitrer dari theAxes. |
xlabel | Tambahkan label ke sumbu x Sumbu. |
ylabel | Tambahkan label ke sumbu y Sumbu. |
judul | Tambahkan judul ke Sumbu. |
figtext | Tambahkan teks di lokasi sewenang-wenang dari Gambar. |
suptitle | Tambahkan judul ke Gambar. |
Semua fungsi ini membuat dan mengembalikan file matplotlib.text.Text() contoh.
Skrip berikut menunjukkan penggunaan beberapa fungsi di atas -
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.set_title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox = {'facecolor': 'red'})
ax.text(2, 6, r'an equation: $E = mc^2$', fontsize = 15)
ax.text(4, 0.05, 'colored text in axes coords',
verticalalignment = 'bottom', color = 'green', fontsize = 15)
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy = (2, 1), xytext = (3, 4),
arrowprops = dict(facecolor = 'black', shrink = 0.05))
ax.axis([0, 10, 0, 10])
plt.show()
Baris kode di atas akan menghasilkan output berikut -
Anda dapat menggunakan subset TeXmarkup dalam string teks Matplotlib apa pun dengan menempatkannya di dalam sepasang tanda dolar ($).
# math text
plt.title(r'$\alpha > \beta$')
Untuk membuat subskrip dan superskrip, gunakan simbol '_' dan '^' -
r'$\alpha_i> \beta_i$'
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t,s)
plt.title(r'$\alpha_i> \beta_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$', fontsize = 20)
plt.text(0.1, -0.5, r'$\sqrt{2}$', fontsize=10)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.show()
Baris kode di atas akan menghasilkan output berikut -
Modul gambar dalam paket Matplotlib menyediakan fungsionalitas yang diperlukan untuk memuat, mengubah skala, dan menampilkan gambar.
Memuat data gambar didukung oleh perpustakaan Bantal. Secara native, Matplotlib hanya mendukung gambar PNG. Perintah yang ditunjukkan di bawah ini kembali ke Pillow jika pembacaan asli gagal.
Gambar yang digunakan dalam contoh ini adalah file PNG, tetapi perlu diingat persyaratan Pillow untuk data Anda sendiri. Ituimread() fungsi digunakan untuk membaca data gambar di file ndarray objek float32 dtype.
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
img = mpimg.imread('mtplogo.png')
Dengan asumsi gambar berikut dinamai sebagai mtplogo.png ada di direktori kerja saat ini.
Larik apa pun yang berisi data gambar dapat disimpan ke file disk dengan menjalankan imsave()fungsi. Di sini versi file png asli yang dibalik secara vertikal disimpan dengan memberikan parameter asal sebagai lebih rendah.
plt.imsave("logo.png", img, cmap = 'gray', origin = 'lower')
Gambar baru muncul seperti di bawah ini jika dibuka di penampil gambar manapun.
Untuk menggambar gambar pada penampil Matplotlib, jalankan imshow() fungsi.
imgplot = plt.imshow(img)
Paket matplotlib dibangun di atas kerangka transformasi untuk dengan mudah berpindah di antara sistem koordinat. Empat sistem koordinat dapat digunakan. Sistem dijelaskan secara singkat dalam tabel yang diberikan di bawah ini -
Koordinat | Objek Transformasi | Deskripsi |
---|---|---|
Data | ax.transData | Sistem koordinat data lahan pengguna. dikendalikan oleh xlim dan ylim |
Sumbu | ax.transAxes | Sistem koordinat Sumbu. (0,0) adalah kiri bawah dan (1,1) adalah kanan atas sumbu. |
Angka | fig.transFigure | Sistem koordinat Gambar. (0,0) adalah kiri bawah dan (1,1) adalah kanan atas gambar |
layar | Tidak ada | Ini adalah sistem koordinat piksel tampilan. (0,0) adalah kiri bawah dan (lebar, tinggi) adalah kanan atas tampilan dalam piksel. Atau, (matplotlib.transforms.IdentityTransform ()) dapat digunakan sebagai pengganti None. |
Perhatikan contoh berikut -
axes.text(x,y,"my label")
Teks ditempatkan pada posisi teoritis dari sebuah titik data (x, y). Jadi kita akan berbicara tentang "data coords".
Menggunakan objek transformasi lain, penempatan dapat dikontrol. Misalnya, jika pengujian di atas akan ditempatkan di tengah sistem koordinat sumbu, jalankan baris kode berikut -
axes.text(0.5, 0.5, "middle of graph", transform=axes.transAxes)
Transformasi ini dapat digunakan untuk segala jenis objek Matplotlib. Transformasi default untukax.text adalah ax.transData dan transformasi default untuk fig.text adalah fig.transFigure.
Sistem koordinat sumbu sangat berguna saat menempatkan teks di sumbu Anda. Anda mungkin sering menginginkan gelembung teks di lokasi tetap; misalnya, di kiri atas panel sumbu dan lokasi tersebut tetap saat Anda menggeser atau memperbesar.