Để vẽ nhiều biểu đồ trong matplotlib, chúng tôi sẽ sử dụng các bước sau -
bước
Tạo các điểm dữ liệu x, y1 và y2 bằng cách sử dụng numpy
Thêm một ô con vào hình hiện tại ở chỉ mục 1
Vẽ đường cong 1 bằng cách sử dụng x và y1
Thêm một ô con vào hình hiện tại ở chỉ số 2
Vẽ đường cong 2 bằng x và y2
Để hiển thị hình, sử dụng phương thức show[]
Ví dụ
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x = np.linspace[-2, 2, 10] y1 = np.sin[x] y2 = np.cos[x] plt.subplot[211] plt.plot[y1] plt.subplot[212] plt.plot[y2] plt.show[]
đầu ra
Sử dụng phương thức subplot[row, col, index], chúng ta có thể chia một hình thành các phần hàng * col và có thể vẽ hình ở vị trí chỉ mục. Trong chương trình sau, chúng ta sẽ tạo hai sơ đồ trong một hình
bước
Tạo các điểm x, y1, y2 bằng cách sử dụng numpy
Với nrows = 1, ncols = 2, index = 1, thêm biểu đồ con vào hình hiện tại, sử dụng phương thức subplot[]
Vẽ đường bằng các điểm x và y1, sử dụng phương thức plot[]
Đặt tiêu đề, nhãn cho trục X, Y cho Hình 2, sử dụng plt. tiêu đề [], plt. xlabel[] và plt. các phương thức ylabel[]
Khi trực quan hóa dữ liệu, thường cần vẽ nhiều biểu đồ trong một hình. Chẳng hạn, nhiều biểu đồ sẽ hữu ích nếu bạn muốn trực quan hóa cùng một biến nhưng từ các góc độ khác nhau [e. g. biểu đồ cạnh nhau và boxplot cho một biến số]. Trong bài đăng này, tôi chia sẻ 4 mẹo đơn giản nhưng thiết thực để vẽ nhiều biểu đồ
Ảnh của Pawel Czerwinski trên Bapt
Tập dữ liệu 📦
Hãy nhập các gói và cập nhật cài đặt mặc định cho biểu đồ để thêm một chút phong cách cá nhân vào biểu đồ. Chúng tôi sẽ sử dụng bộ dữ liệu tích hợp sẵn của Seaborn trên các mẹo
import seaborn as sns # v0.11.2
import matplotlib.pyplot as plt # v3.4.2
sns.set[style='darkgrid', context='talk', palette='rainbow']df = sns.load_dataset['tips']
df.head[]📍 Mẹo 1. plt. ô con []
Một cách dễ dàng để vẽ nhiều ô con là sử dụng
fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
0. Đây là một cú pháp ví dụ để vẽ 2 ô con cạnh nhau
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];Ở đây, chúng tôi đã vẽ hai ô con trong một hình duy nhất. Chúng tôi có thể tùy chỉnh thêm từng ô con. Chẳng hạn, chúng ta có thể thêm tiêu đề cho từng ô con như thế này
fig, ax = plt.subplots[1, 2, figsize=[10,4]]
sns.histplot[data=df, x='tip', ax=ax[0]]
ax[0].set_title["Histogram"]
sns.boxplot[data=df, x='tip', ax=ax[1]]
ax[1].set_title["Boxplot"];Chúng ta có thể hình dung cùng một bộ đồ thị cho tất cả các biến số trong một vòng lặp
numerical = df.select_dtypes['number'].columnsfor col in numerical:
fig, ax = plt.subplots[1, 2, figsize=[10,4]]
sns.histplot[data=df, x=col, ax=ax[0]]
sns.boxplot[data=df, x=col, ax=ax[1]];📍 Mẹo 2. plt. ô phụ[]
Một cách khác để trực quan hóa nhiều biểu đồ là sử dụng
fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
1 mà không có
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
2 ở cuối]. Cú pháp hơi khác so với trước đây________số 8
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];Cách tiếp cận này đặc biệt hữu ích nếu bạn muốn vẽ cùng một loại biểu đồ cho nhiều ô và xem tất cả trong một hình
plt.figure[figsize=[14,4]]
for i, col in enumerate[numerical]:
ax = plt.subplot[1, len[numerical], i+1]
sns.boxplot[data=df, x=col, ax=ax]Chúng tôi có thể tùy chỉnh thêm từng ô con giống như trước đây. Chẳng hạn, hãy thêm một tiêu đề cho mỗi cốt truyện
import seaborn as sns # v0.11.2
0
import matplotlib.pyplot as plt # v3.4.2
sns.set[style='darkgrid', context='talk', palette='rainbow']df = sns.load_dataset['tips']
df.head[]Đã học cả
fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
0 và
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
1, so sánh dưới đây có thể hữu ích trong việc hiểu được những điểm tương đồng và khác biệt
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];Thật hữu ích khi làm quen với cả hai cách tiếp cận vì chúng có thể hữu ích trong các tình huống khác nhau
📍 Mẹo 3. plt. chặt chẽ_layout[]
Khi vẽ nhiều biểu đồ, thông thường sẽ thấy nhãn của một số ô con chồng lên các ô con lân cận của chúng như thế này
import seaborn as sns # v0.11.2
3
import matplotlib.pyplot as plt # v3.4.2
sns.set[style='darkgrid', context='talk', palette='rainbow']df = sns.load_dataset['tips']
df.head[]Tên biến trên trục x của hai biểu đồ trên cùng bị cắt bỏ và nhãn trục y của các ô bên phải chồng lên các ô con bên trái. Khắc phục điều này thật dễ dàng với
fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
5
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];import seaborn as sns # v0.11.2
5
import matplotlib.pyplot as plt # v3.4.2
sns.set[style='darkgrid', context='talk', palette='rainbow']df = sns.load_dataset['tips']
df.head[]thì đấy. Nó trông tốt hơn rất nhiều bây giờ. Tôi hầu như luôn sử dụng
fig, ax = plt.subplots[nrows=1, ncols=2, figsize=[10,4]]
5 khi vẽ nhiều biểu đồ để tránh chồng chéo
sns.histplot[data=df, x='tip', ax=ax[0]]
sns.boxplot[data=df, x='tip', ax=ax[1]];📍 Mẹo 4. plt. phụ đề[]
Cuối cùng, mẹo này rất hữu ích nếu bạn muốn đặt tiêu đề cho toàn bộ hình
import seaborn as sns # v0.11.2
7
import matplotlib.pyplot as plt # v3.4.2
sns.set[style='darkgrid', context='talk', palette='rainbow']df = sns.load_dataset['tips']
df.head[]Ngoài ra, bạn có thể tùy chỉnh các ô riêng lẻ theo cách bạn muốn. Chẳng hạn, bạn vẫn có thể thêm tiêu đề cho từng ô con
Ảnh của engin akyurt trên Bapt
Bạn có muốn truy cập nhiều nội dung như thế này? . Nếu bạn trở thành thành viên bằng liên kết giới thiệu của tôi, một phần phí thành viên của bạn sẽ trực tiếp hỗ trợ tôi
Cảm ơn bạn đã đọc bài viết này. Hy vọng bạn có thể áp dụng những mẹo hữu ích này khi vẽ nhiều ô con vào lần tới trong Python. Nếu bạn là người ham học hỏi và muốn tìm hiểu thêm về chủ đề này, tài nguyên này rất hữu ích. Nếu bạn muốn tìm hiểu thêm các mẹo trực quan hóa dữ liệu, đây là một số bài đăng của tôi về trực quan hóa dữ liệu