Hướng dẫn dùng plt.show python

Bạn có thể coi 
# 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: http://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 matplotlib
0

Output:

Ta có thể lặp qua mảng axes để vẽ

pip install matplotlib
1

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 matplotlib
2

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 matplotlib
3

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 matplotlib
4

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 matplotlib
5

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 matplotlib
6

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 matplotlib
7

Hàm Legend

Phương thức này sẽ hiển thị chú giải trong biểu đồ

pip install matplotlib
8

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 matplotlib
9

Output:

Chúng ta có thể thêm màu sắc theo các cách sau

%matplotlib inline
0

Độ 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 inline
1

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 inline
2

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