Tên của các đối tượng
Matplotlib là hướng đối tượng mạnh mẽ và các đối tượng chính của nó là hình và các trục (tôi thấy tên axes
hơi sai, nhưng có lẽ đó chỉ là tôi).
Bạn có thể coi hình vẽ như một khung vẽ , trong đó bạn thường chỉ định kích thước và có thể ví dụ, màu nền, v.v. Bạn sử dụng khung vẽ, hình , về cơ bản theo hai cách, đặt các đối tượng khác lên đó (chủ yếu là các trục , nhưng cũng như nhãn văn bản, v.v.) và lưu nội dung của nó với savefig
.
Bạn có thể nghĩ về một trục như một loại dao quân đội Thụy Sĩ, một đối tượng tiện dụng mà cung cấp một công cụ (ví dụ .plot
, .scatter
, .hist
vv) cho tất cả mọi thứ, chủ yếu. Bạn có thể đặt một, hai, ... nhiều trục bên trong một hình bằng một trong nhiều phương pháp khác nhau.
các plt
giao diện
Các plt giao diện thủ tục ban đầu được phát triển để bắt chước các MATLAB ™ giao diện nhưng không thực sự khác biệt so với giao diện hướng đối tượng, ngay cả khi bạn không thực hiện một tham chiếu trực tiếp đến các đối tượng chính (ví dụ, một con số và một trục ) các đối tượng này là tự động khởi tạo và mỗi phương thức plt , về cơ bản, được dịch sang một lệnh gọi của một trong các phương thức của các đối tượng cơ bản bên dưới: ví dụ: a plt.plot()
là a hidden_axes.plot
và a plt.savefig
là a hidden_figure.savefig
.
Trong mọi thời điểm, bạn có thể xử lý các đối tượng ẩn này bằng cách sử dụng plt.gcf
và plt.gca
, và điều này đôi khi cần thiết khi một trong các phương thức đối tượng chưa được chuyển đến một phương thức trong không gian tên plt .
Tôi muốn nói thêm rằng không gian tên plt cũng chứa một số phương thức thuận tiện để khởi tạo, theo những cách khác nhau, hình và trục .
Ví dụ của bạn
Cách thứ nhất
plt.plot(x, y)
Ở đây bạn chỉ sử dụng giao diện plt , bạn chỉ có thể sử dụng một trục duy nhất trong mỗi hình , nhưng đây là những gì bạn muốn khi bạn đang khám phá dữ liệu của mình, một công thức nhanh chóng hoàn thành công việc ...
Cách thứ 2
ax = plt.subplot()
ax.plot(x, y)
Ở đây bạn sử dụng một phương thức tiện lợi trong không gian tên plt để đặt tên (và một xử lý) cho đối tượng trục của bạn , nhưng btw cũng có một hình ẩn . Sau đó, bạn có thể sử dụng đối tượng trục để vẽ, để tạo biểu đồ, v.v., tất cả những thứ bạn có thể làm với giao diện plt , nhưng bạn cũng có thể truy cập tất cả các thuộc tính của nó và sửa đổi chúng một cách tự do hơn.
Cách thứ 3
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)
Tại đây, bạn bắt đầu khởi tạo một hình bằng phương thức tiện lợi trong không gian tên plt và sau đó bạn chỉ sử dụng giao diện hướng đối tượng.
Có thể bỏ qua phương thức tiện lợi plt ( matplotlib.figure.Figure
) nhưng sau đó bạn phải điều chỉnh con số để có trải nghiệm tương tác tốt hơn (xét cho cùng, đó là một phương thức tiện lợi ).
Đề xuất cá nhân
Tôi đề nghị trần plt.plot
, plt.scatter
trong bối cảnh của một phiên tương tác, có thể sử dụng IPython với %matplotlib
lệnh ma thuật của nó , và cũng trong bối cảnh của một sổ ghi chép Jupyter khám phá.
Mặt khác, cách tiếp cận hướng đối tượng, cộng với một vài plt
phương pháp tiện lợi, là cách để
- nếu bạn có một vấn đề vĩnh viễn cần giải quyết một lần cho tất cả với sự sắp xếp tùy chỉnh của các ô phụ được tinh chỉnh,
- nếu bạn muốn nhúng Matplotlib vào giao diện người dùng của chương trình bạn viết.
Có một vùng xám lớn giữa những thái cực này và nếu bạn hỏi tôi phải làm gì, tôi chỉ nói "Điều đó phụ thuộc" ...