Nama-nama benda
Matplotlib sangat berorientasi pada objek dan objek utamanya adalah gambar dan sumbu (menurut saya namanya axes
agak menyesatkan, tapi mungkin hanya saya).
Anda dapat menganggap gambar sebagai kanvas , yang biasanya Anda tentukan dimensinya dan mungkin misalnya, warna latar belakang dll. Anda menggunakan kanvas, gambar tersebut , pada dasarnya dalam dua cara, menempatkan objek lain di atasnya (kebanyakan sumbu , tetapi juga label teks dll) dan menyimpan isinya dengan savefig
.
Anda dapat memikirkan sebuah kapak sebagai semacam pisau Swiss Army, benda berguna yang menawarkan alat (misalnya .plot
, .scatter
, .hist
dll) untuk segala sesuatu, sebagian besar. Anda dapat menempatkan satu, dua, ... banyak sumbu di dalam gambar menggunakan salah satu dari banyak metode berbeda.
The plt
antarmuka
The plt antarmuka prosedural pada awalnya dikembangkan untuk meniru MATLAB ™ antarmuka tetapi tidak benar-benar berbeda dari antarmuka berorientasi objek, bahkan jika Anda tidak membuat referensi langsung ke objek utama (yaitu, tokoh dan sumbu ) benda-benda yang secara otomatis dipakai dan setiap metode plt , pada dasarnya, diterjemahkan ke panggilan salah satu metode objek fundamental yang mendasarinya: misalnya, a plt.plot()
adalah a hidden_axes.plot
dan a plt.savefig
adalah a hidden_figure.savefig
.
Setiap saat Anda dapat menangani objek-objek tersembunyi ini dengan menggunakan plt.gcf
dan plt.gca
, dan ini kadang-kadang diperlukan ketika salah satu metode objek belum dipindahkan ke metode di namespace plt .
Saya ingin menambahkan bahwa namespace plt juga berisi sejumlah metode praktis untuk membuat instance, dengan cara yang berbeda, gambar dan sumbu .
Contoh Anda
Cara pertama
plt.plot(x, y)
Di sini Anda hanya menggunakan antarmuka plt , Anda hanya dapat menggunakan satu sumbu di setiap gambar , tetapi inilah yang Anda inginkan saat melakukan eksplorasi data Anda, resep cepat yang menyelesaikan pekerjaan ...
Cara kedua
ax = plt.subplot()
ax.plot(x, y)
Di sini Anda menggunakan metode praktis di namespace plt untuk memberi nama (dan pegangan) ke objek sumbu Anda , tetapi btw juga ada gambar tersembunyi . Anda nantinya dapat menggunakan objek sumbu untuk membuat plot, membuat histogram, dll., Semua hal yang dapat Anda lakukan dengan antarmuka plt , tetapi Anda juga dapat mengakses semua atributnya dan memodifikasinya dengan kebebasan yang lebih besar.
Cara ke-3
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)
Di sini Anda mulai membuat instance gambar menggunakan metode praktis di namespace plt dan kemudian Anda hanya menggunakan antarmuka berorientasi objek.
Dimungkinkan untuk melewati metode kenyamanan plt ( matplotlib.figure.Figure
) tetapi Anda kemudian harus menyesuaikan gambar untuk pengalaman interaktif yang lebih baik (bagaimanapun, ini adalah metode kenyamanan ).
Rekomendasi pribadi
Saya sarankan telanjang plt.plot
, plt.scatter
dalam konteks sesi interaktif, mungkin menggunakan IPython dengan %matplotlib
perintah ajaibnya, dan juga dalam konteks notebook Jupyter eksplorasi.
Di sisi lain pendekatan berorientasi objek, ditambah beberapa plt
metode kemudahan, adalah cara yang harus ditempuh
- jika Anda memiliki masalah permanen untuk diselesaikan sekali untuk semua dengan pengaturan subplot yang disesuaikan dengan baik,
- jika Anda ingin menanamkan Matplotlib di UI program yang Anda tulis.
Ada area abu-abu besar di antara kedua ekstrem ini dan jika Anda bertanya kepada saya apa yang harus dilakukan, saya hanya akan mengatakan "Tergantung" ...