Bagaimana cara menambahkan judul ke subplot di Matplotlib?


225

Saya memiliki satu angka yang berisi banyak subplot.

fig = plt.figure(num=None, figsize=(26, 12), dpi=80, facecolor='w', edgecolor='k')
fig.canvas.set_window_title('Window Title')

# Returns the Axes instance
ax = fig.add_subplot(311) 
ax2 = fig.add_subplot(312) 
ax3 = fig.add_subplot(313) 

Bagaimana saya menambahkan judul ke subplot?

fig.suptitlemenambahkan judul ke semua grafik dan meskipun ax.set_title()ada, yang terakhir tidak menambahkan judul apa pun ke subplot saya.

Terima kasih untuk bantuannya.

Edit: salah ketik yang dikoreksi set_title(). Terima kasih Rutger Kassies

Jawaban:


201

ax.title.set_text('My Plot Title') tampaknya bekerja juga.

fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
ax1.title.set_text('First Plot')
ax2.title.set_text('Second Plot')
ax3.title.set_text('Third Plot')
ax4.title.set_text('Fourth Plot')
plt.show()

matplotlib menambahkan judul pada subplot


Bagi siapa pun yang memiliki masalah dengan ukuran font untuk histogram, anehnya mengurangi jumlah bin biarkan saya menambahnya. Pergi dari 500 hingga 100.
mLstudent33

Jika Anda harus dapat menentukan ukuran font, gunakan ax.set_title('title', fontsize=16)saja.
Tobias PG

234

ax.set_title() harus mengatur judul untuk sub-plot yang terpisah:

import matplotlib.pyplot as plt

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]

    fig = plt.figure()
    fig.suptitle("Title for whole figure", fontsize=16)
    ax = plt.subplot("211")
    ax.set_title("Title for first plot")
    ax.plot(data)

    ax = plt.subplot("212")
    ax.set_title("Title for second plot")
    ax.plot(data)

    plt.show()

Bisakah Anda memeriksa apakah kode ini cocok untuk Anda? Mungkin sesuatu menimpa mereka nanti?


1
Ini berfungsi untuk saya, matplotlib versi 1.2.2 python 2.7.5
NameOfTheRose

41

Jawaban singkat dengan asumsi import matplotlib.pyplot as plt:

plt.gca().set_title('title')

seperti dalam:

plt.subplot(221)
plt.gca().set_title('title')
plt.subplot(222)
etc...

Maka tidak perlu untuk variabel yang berlebihan.


8

Jika Anda ingin membuatnya lebih pendek, Anda dapat menulis:

import matplolib.pyplot as plt
for i in range(4):
    plt.subplot(2,2,i+1).set_title('Subplot n°{}' .format(i+1))
plt.show()

Itu membuatnya mungkin kurang jelas tetapi Anda tidak perlu lebih banyak baris atau variabel


1

Jika Anda memiliki banyak gambar dan Anda ingin mengulanginya dan menunjukkannya 1 per 1 beserta judul - inilah yang dapat Anda lakukan. Tidak perlu mendefinisikan secara eksplisit ax1, ax2, dll.

  1. Tangkapannya adalah Anda dapat menentukan sumbu dinamis (kapak) seperti pada Baris 1 kode dan Anda dapat mengatur judulnya di dalam satu lingkaran.
  2. Baris array 2D adalah panjang (len) sumbu (kapak)
  3. Setiap baris memiliki 2 item yaitu Ini adalah daftar dalam daftar (Poin No.2)
  4. set_title dapat digunakan untuk mengatur judul, setelah sumbu (kapak) atau subplot yang tepat dipilih.
import matplotlib.pyplot as plt    
fig, ax = plt.subplots(2, 2, figsize=(6, 8))  
for i in range(len(ax)): 
    for j in range(len(ax[i])):
        ## ax[i,j].imshow(test_images_gr[0].reshape(28,28))
        ax[i,j].set_title('Title-' + str(i) + str(j))

1
fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=1, ncols=4,figsize=(11, 7))

grid = plt.GridSpec(2, 2, wspace=0.2, hspace=0.5)

ax1 = plt.subplot(grid[0, 0])
ax2 = plt.subplot(grid[0, 1:])
ax3 = plt.subplot(grid[1, :1])
ax4 = plt.subplot(grid[1, 1:])

ax1.title.set_text('First Plot')
ax2.title.set_text('Second Plot')
ax3.title.set_text('Third Plot')
ax4.title.set_text('Fourth Plot')

plt.show()

masukkan deskripsi gambar di sini


0

Solusi yang cenderung saya gunakan semakin banyak adalah ini:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 2)  # 1
for i, ax in enumerate(axs.ravel()): # 2
    ax.set_title("Plot #{}".format(i)) # 3
  1. Buat jumlah sumbu Anda yang sewenang-wenang
  2. axs.ravel () mengonversi objek 2-dim Anda menjadi vektor 1-dim dalam gaya baris-utama
  3. memberikan judul pada objek sumbu saat ini
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.