Complex and semantic figure composition

Meletakkan Sumbu dalam Gambar dalam kisi yang tidak seragam bisa membosankan dan bertele-tele. Untuk kisi-kisi padat dan rata yang dimiliki Figure.subplots tetapi untuk tata letak yang lebih kompleks, seperti Sumbu yang membentang beberapa kolom / baris tata letak atau membiarkan beberapa area Gambar kosong, Anda dapat menggunakan gridspec.GridSpec(lihat Menyesuaikan Tata Letak Gambar Menggunakan GridSpec dan Fungsi Lainnya ) atau secara manual tempatkan kapak Anda. Figure.subplot_mosaicbertujuan untuk menyediakan antarmuka untuk meletakkan sumbu Anda secara visual (baik sebagai seni ASCII atau daftar bersarang) untuk merampingkan proses ini.

Antarmuka ini secara alami mendukung penamaan sumbu. Figure.subplot_mosaic mengembalikan kamus yang dikunci pada label yang digunakan untuk meletakkan Gambar. Dengan mengembalikan struktur data dengan nama, lebih mudah untuk menulis kode plot yang independen dari tata letak Gambar.

Contoh Script:

import matplotlib.pyplot as plt

import numpy as np

 

# Helper function used for visualization in the following examples

def identify_axes(ax_dict, fontsize=48):

   

    kw = dict(ha="center", va="center", fontsize=fontsize, color="darkgrey")

    for k, ax in ax_dict.items():

        ax.text(0.5, 0.5, k, transform=ax.transAxes, **kw)

np.random.seed(19680801)

hist_data = np.random.randn(1_500)

 

 

fig = plt.figure(constrained_layout=True)

ax_array = fig.subplots(2, 2, squeeze=False)

 

ax_array[0, 0].bar(["a", "b", "c"], [5, 7, 9])

ax_array[0, 1].plot([1, 2, 3])

ax_array[1, 0].hist(hist_data, bins="auto")

ax_array[1, 1].imshow([[1, 2], [2, 1]])

 

identify_axes(

    {(j, k): a for j, r in enumerate(ax_array) for k, a in enumerate(r)},

)

fig = plt.figure(constrained_layout=True)

ax_dict = fig.subplot_mosaic(

    [

        ["bar", "plot"],

        ["hist", "image"],

    ],

)

ax_dict["bar"].bar(["a", "b", "c"], [5, 7, 9])

ax_dict["plot"].plot([1, 2, 3])

ax_dict["hist"].hist(hist_data)

ax_dict["image"].imshow([[1, 2], [2, 1]])

identify_axes(ax_dict)

print(ax_dict)

axd = plt.figure(constrained_layout=True).subplot_mosaic(

    """

    ABD

    CCD

    """

)

identify_axes(axd)

axd = plt.figure(constrained_layout=True).subplot_mosaic(

    """

    A.C

    BBB

    .D.

    """

)

identify_axes(axd)

axd = plt.figure(constrained_layout=True).subplot_mosaic(

    """

    .a.

    bAc

    .d.

    """,

    gridspec_kw={

        # set the height ratios between the rows

        "height_ratios": [1, 3.5, 1],

        # set the width ratios between the columns

        "width_ratios": [1, 3.5, 1],

    },

)

identify_axes(axd)

axd = plt.figure(constrained_layout=True).subplot_mosaic(

    "AB", subplot_kw={"projection": "polar"}

)

identify_axes(axd)

mosaic = np.zeros((4, 4), dtype=int)

for j in range(4):

    mosaic[j, j] = j + 1

axd = plt.figure(constrained_layout=True).subplot_mosaic(

    mosaic,

    empty_sentinel=0,

)

identify_axes(axd)


Share on :

0 Response to "Complex and semantic figure composition"

Posting Komentar