# matplotlib/pyplot.py
>>> def plot[*args, **kwargs]:
... """An abridged version of plt.plot[]."""
... ax = plt.gca[]
... return ax.plot[*args, **kwargs]
>>> def gca[**kwargs]:
... """Get the current Axes of the current Figure."""
... return plt.gcf[].gca[**kwargs]
7đối tượng như một thùng chứa giống như hộp chứa một hoặc nhiều # matplotlib/pyplot.py
>>> def plot[*args, **kwargs]:
... """An abridged version of plt.plot[]."""
... ax = plt.gca[]
... return ax.plot[*args, **kwargs]
>>> def gca[**kwargs]:
... """Get the current Axes of the current Figure."""
... return plt.gcf[].gca[**kwargs]
8[ô thực tế]. Bên dưới # matplotlib/pyplot.py
>>> def plot[*args, **kwargs]:
... """An abridged version of plt.plot[]."""
... ax = plt.gca[]
... return ax.plot[*args, **kwargs]
>>> def gca[**kwargs]:
... """Get the current Axes of the current Figure."""
... return plt.gcf[].gca[**kwargs]
8trong hệ thống phân cấp là các đối tượng nhỏ hơn như dấu tích, dòng riêng lẻ, chú giải và hộp văn bản. Hầu hết mọi “phần tử” của biểu đồ đều là đối tượng Python có thể thao tác của riêng nó, tất cả các dấu tích và nhãn: Python được sử dụng nhiều nhất trong lĩnh vực phân tích dữ liệu, mà trong khoa học dữ liệu, công việc trực tiếp hóa thông tin qua các thị đồ, biểu đồ giúp chúng tôi hiểu được các mối quan hệ trong dữ liệu dễ dàng hơn rất nhiều. Matplotlib là một thư viện được sử dụng để vẽ các thị đồ trong Python
Matplotlib là thư viện trực quan hóa dữ liệu kết hợp trong Python. Nó được tạo ra bởi John Hunter. Đây là một thư viện đồ họa 2D và 3D tuyệt vời để tạo ra các số liệu khoa học.
Bạn có thể tìm hiểu thêm tại đây: //matplotlib.org/
Nào! Giờ chúng ta sẵn sàng để học nó rồi chứ, trước khi bắt đầu, bạn hãy mở google colab và import thư viện này vào nhé!
import matplotlib.pyplot as plt
Trong google colab mặc định thư viện này đã được cài sẵn, nếu bạn sử dụng trên VS Code hay trên pycharm nhớ cài đặt bằng nhé
pip install matplotlib
Nếu bạn đang sử dụng Jupiter notebook hãy thêm dòng lệnh này vào để hiển thị trong các ô output
%matplotlib inline
Nếu bạn đang sử dụng trình soạn thảo khác, bạn sẽ sử dụng: plt.show [] ở cuối tất cả các lệnh vẽ biểu đồ của mình để hình hiển thị
Rồi, bây giờ chúng ta tìm hiểu về nó.
Đầu tiên để vẽ biểu đồ, ta cần dữ liệu, ta tạo 2 mảng numpy để lấy dữ liệu thực hành nhé!
import numpy as np x = np.linspace[0, 5, 11] y = x ** 2
Vẽ biểu đồ đơn giản bằng Matplotlib
Chúng ta có thể tạo một biểu đồ line rất đơn giản bằng cách sử dụng cách sau
plt.plot[x, y, 'r'] # 'r' là màu đỏ plt.xlabel['X Axis Title Here'] plt.ylabel['Y Axis Title Here'] plt.title['String Title Here']
Output:
Tạo nhiều đồ thị trên cùng một biểu đồ
Để tạo như vậy ta dùng hàm subplot[], với đối số đầu tiên là số dòng, đối số thứ 2 là số cột, và đối số thứ 3 là vị trí biểu đồ, bắt đầu từ vị trí 1
plt.subplot[1,2,1] plt.plot[x, y, 'r--'] # More on color options later plt.subplot[1,2,2] plt.plot[y, x, 'g*-'];
Output:
Vẽ theo phương pháp hướng đối tượng Matplotlib
Điều này có nghĩa là chúng ta sẽ khởi tạo các đối tượng biểu đồ và sau đó gọi các phương thức hoặc thuộc tính từ đối tượng đó.
Cách tiếp cận này sẽ đẹp hơn khi xử lý một biểu đồ có nhiều đồ thị trên đó. Để bắt đầu, chúng ta tạo một ví dụ biểu đồ. Sau đó, chúng ta có thể thêm các trục vào biểu đồ đó:
# Tạo một đối tượng figure[biểu đồ trống] fig = plt.figure[] axes = fig.add_axes[[0.1, 0.1, 0.8, 0.8]]# left, bottom, width, height [khoảng từ 0 đến 1] print[axes]
Output: ta có một khung cho biểu đồ trống
Sau đó ta vẽ biểu đồ vào đối tượng vừa tạo
axes.plot[x, y, 'b'] axes.set_xlabel['Set X Label'] # Notice the use of set_ to begin methods axes.set_ylabel['Set y Label'] axes.set_title['Set Title']
Output:
Giờ phức tạp hơn một chút nhé, nhưng ưu điểm là giờ đây chúng ta có toàn quyền kiểm soát vị trí đặt các trục của khung biểu đồ và chúng ta có thể dễ dàng thêm nhiều trục vào
fig = plt.figure[]# Khai báo một đối tượng cho biểu đồ axes1 = fig.add_axes[[0.1, 0.1, 0.8, 0.8]] #khai báo Trục chính axes2 = fig.add_axes[[0.2, 0.5, 0.4, 0.3]] # Khai báo trục thêm vào # đối tượng Figure chính Axes 1 axes1.plot[x, y, 'b'] axes1.set_xlabel['X_label_axes2'] axes1.set_ylabel['Y_label_axes2'] axes1.set_title['Axes 2 Title'] # đối tượng Figure thêm vào Axes 2 axes2.plot[y, x, 'r'] axes2.set_xlabel['X_label_axes2'] axes2.set_ylabel['Y_label_axes2'] axes2.set_title['Axes 2 Title'];
Output:
Đối tượng subplot[]
Đối tượng plt.subplots [] sẽ hoạt động như một trình quản lý trục tự động hơn. Ta có thể khai báo luôn đối tượng axes ngay trong subplot
fig, axes = plt.subplots[]# Khai báo một đối tượng subplot # Bây giờ ta có thể sử dụng đối tượng axes để vẽ đồ thị axes.plot[x, y, 'r'] axes.set_xlabel['x'] axes.set_ylabel['y'] axes.set_title['title'];
Output:
Ta có thể chỉ định số hàng và cột khi tạo đối tượng subplots []:
pip install matplotlib0
Output:
Ta có thể lặp qua mảng axes để vẽ
pip install matplotlib1
Output:
Một vấn đề phổ biến với matplotlib là các ô hoặc số liệu con chồng chéo lên nhau. Chúng ta có thể sử dụng phương thức fig.tight_layout [] hoặc plt.tight_layout [], tự động điều chỉnh vị trí của các trục trên canvas hình để không có nội dung chồng chéo:
pip install matplotlib2
Output:
Bạn thấy biểu đồ bên dưới đã được tự động nới ra, không bị chồng chéo chữ “y” lên biểu đồ đầu tiên
Kích thước biểu đồ và độ nét ảnh biểu đồ [DPI]
Matplotlib cho phép xác định kích thước hình ảnh, DPI khi đối tượng biểu đồ được tạo. Bạn có thể sử dụng các đối số từ khóa figsize và dpi. DPI càng cao, hình ảnh càng nét và dung lượng cũng tăng theo, thông thường ta nên để dpi mặc định, hoặc trong khoảng từ 100 đến 200 dpi
Chiều rộng và chiều cao figsize được tính bằng inch
pip install matplotlib3
Output:
Ta thấy kích thước biểu đồ lớn ra.
Lưu biểu đồ
ta dùng lệnh savefig để lưu lại biểu đồ đã vẽ, với đường dẫn và tên file ảnh
pip install matplotlib4
Tại đây, chúng ta cũng có thể tùy chọn chỉ định DPI và chọn giữa các định dạng đầu ra khác nhau:
pip install matplotlib5
Nhãn và tiêu đề biểu đồ
Một tiêu đề có thể được thêm vào mỗi trường hợp trục trong một hình. Để đặt tiêu đề, hãy sử dụng phương thức set_title
pip install matplotlib6
Tương tự, với các phương thức set_xlabel và set_ylabel, chúng ta có thể đặt nhãn của trục X và Y:
pip install matplotlib7
Hàm Legend
Phương thức này sẽ hiển thị chú giải trong biểu đồ
pip install matplotlib8
Output:
Màu sắc, kiểu đường vẽ và chiều rộng đường vẽ
Màu sắc
Với matplotlib, chúng ta có thể xác định màu sắc của đường thẳng và các yếu tố đồ họa khác theo một số cách. Trước hết, chúng ta có thể sử dụng cú pháp giống MATLAB trong đó ‘b’ có nghĩa là màu xanh lam, ‘g’ có nghĩa là màu xanh lá cây, v.v. API MATLAB để chọn kiểu dòng cũng được hỗ trợ: ví dụ: trong đó, ‘b.-‘ có nghĩa là a đường màu xanh lam với các dấu chấm
pip install matplotlib9
Output:
Chúng ta có thể thêm màu sắc theo các cách sau
%matplotlib inline0
Độ rộng và kiểu line
Để thay đổi độ rộng dòng, chúng ta có thể sử dụng đối số từ khóa line width hoặc lw. Kiểu dòng có thể được chọn bằng cách sử dụng các đối số từ khóa linestyle hoặc ls:
Chúng ta sẽ tham khảo các lệnh vẽ dưới đây để tiện khi sử dụng
%matplotlib inline1
Output:
Phóng to biểu đồ
Chúng ta có thể cấu hình phạm vi của các trục bằng cách sử dụng phương thức set_ylim và set_xlim trong đối tượng trục. Xem qua ví dụ ba đồ thị bên dưới đây bạn sẽ dễ hiểu hơn.
%matplotlib inline2
Output:
Các dạng biểu đồ trong matplotlib
Ngoài biểu đồ line mà ta đã học phía trên, ta còn có các dạng biểu đồ như barplots, histograms, scatter plots… những biểu đồ dạng này ta nên vẽ trong seaborn, nhưng ta cũng xem qua cho biết