Matplotlib - Multiplots

Trong chương này, chúng ta sẽ học cách tạo nhiều ô con trên cùng một khung vẽ.

Các subplot()hàm trả về đối tượng trục tại một vị trí lưới nhất định. Chữ ký cuộc gọi của hàm này là -

plt.subplot(subplot(nrows, ncols, index)

Trong hình hiện tại, hàm tạo và trả về một đối tượng Axes, tại chỉ số vị trí của lưới các nrows theo ncolsaxes. Các chỉ mục đi từ 1 đến nrows * ncols, tăng dần theo thứ tự hàng-chính. Nếunrows, ncol và chỉ mục đều nhỏ hơn 10. Các chỉ mục cũng có thể được cung cấp dưới dạng số đơn, nối, thứ tự.

Ví dụ: subplot (2, 3, 3) và subplot (233) đều tạo Axes ở góc trên cùng bên phải của hình hiện tại, chiếm một nửa chiều cao hình và một phần ba chiều rộng hình.

Việc tạo một subplot sẽ xóa mọi subplot tồn tại trước đó chồng lên nó ngoài việc chia sẻ ranh giới.

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

Dòng mã trên tạo ra kết quả sau:

Hàm add_subplot () của lớp figure sẽ không ghi đè lên biểu đồ hiện có -

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])

Khi dòng mã trên được thực thi, nó tạo ra kết quả sau:

Bạn có thể thêm một âm mưu chèn trong cùng một hình bằng cách thêm một đối tượng trục khác trong cùng một khung vẽ.

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()

Khi thực thi dòng mã trên, kết quả sau được tạo: