Tạo nhiều ô trong python

Để 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]]
    sns.histplot[data=df, x='tip', ax=ax[0]]
    sns.boxplot[data=df, x='tip', ax=ax[1]];
    0. Đây là một cú pháp ví dụ để vẽ 2 ô con cạnh nhau

    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]]
    sns.histplot[data=df, x='tip', ax=ax[0]]
    sns.boxplot[data=df, x='tip', ax=ax[1]];
    1 mà không có
    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]];
    2 ở cuối]. Cú pháp hơi khác so với trước đây

    ________số 8

    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
    import matplotlib.pyplot as plt # v3.4.2
    sns.set[style='darkgrid', context='talk', palette='rainbow']
    df = sns.load_dataset['tips']
    df.head[]
    0

    Đã học cả

    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]];
    0 và
    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]];
    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

    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
    import matplotlib.pyplot as plt # v3.4.2
    sns.set[style='darkgrid', context='talk', palette='rainbow']
    df = sns.load_dataset['tips']
    df.head[]
    3

    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]]
    sns.histplot[data=df, x='tip', ax=ax[0]]
    sns.boxplot[data=df, x='tip', ax=ax[1]];
    5

    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[]
    5

    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]]
    sns.histplot[data=df, x='tip', ax=ax[0]]
    sns.boxplot[data=df, x='tip', ax=ax[1]];
    5 khi vẽ nhiều biểu đồ để tránh chồng chéo

    📍 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
    import matplotlib.pyplot as plt # v3.4.2
    sns.set[style='darkgrid', context='talk', palette='rainbow']
    df = sns.load_dataset['tips']
    df.head[]
    7

    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

Chủ Đề