Shailen
Tengo una figura que contiene muchas subtramas.
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)
¿Cómo agrego títulos a las subtramas?
fig.suptitle
agrega un título a todos los gráficos y aunque ax.set_title()
existe, este último no agrega ningún título a mis subtramas.
Gracias por tu ayuda.
Editar: error tipográfico corregido sobre set_title()
. Gracias Rutger Kassies
Jarad
ax.title.set_text('My Plot Title')
parece funcionar también.
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()
-
Para cualquiera que tenga problemas con el tamaño de fuente para un histograma, aunque parezca extraño, reducir el número de contenedores me permite aumentarlo. Pasó de 500 a 100.
– mlestudiante33
19 de febrero de 2020 a las 8:56
-
Si necesita poder especificar el tamaño de fuente, use
ax.set_title('title', fontsize=16)
en cambio.– Tobías PG
19 de junio de 2020 a las 14:56
-
@TobiasP.G., ¿cómo colocas el título dentro de la trama secundaria?
– Hitanshu Sachania
17 de noviembre de 2020 a las 17:52
-
Hola @Jarad, gracias por tu respuesta. En ese momento, usé
ax2.text()
porqueax2.title.set_y()
no estaba funcionando de alguna manera. Dadas 4 subparcelas del mismo tamaño, si doy un valor de $0.9$ por $y$ a cada subparcelaaxis.title.set_y()
todavía colocaba los títulos en lugares extraños y no coincidía con cada subtrama.– Hitanshu Sachania
25 de mayo de 2021 a las 11:38
masteusz
ax.set_title()
debe establecer los títulos para subparcelas separadas:
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()
¿Puedes comprobar si este código te funciona? ¿Quizás algo los sobrescribe más tarde?
-
Esto funciona para mí, matplotlib versión 1.2.2 python 2.7.5
– NombreDeLaRose
14 oct 2019 a las 6:50
-
En matplotlib 3.5.2, esto arroja un ValueError en plt.subplot(“211”) / plt.subplot(“212”) . La solución es simplemente reemplazar con argumentos enteros, plt.subplot(211) y plt.subplot(212).
– Giorgos Sfikas
9 de mayo a las 9:46
JMDE
Una respuesta abreviada asumiendo
import matplotlib.pyplot as plt
:
plt.gca().set_title('title')
como en:
plt.subplot(221)
plt.gca().set_title('title')
plt.subplot(222)
etc...
Entonces no hay necesidad de variables superfluas.
-
este enfoque es bueno porque da más control sobre la posición del título… por ejemplo, al agregar kwarg y=0.7 puede trazar el título de la subtrama dentro de la subtrama
– CreekGeek
25 de agosto de 2020 a las 5:25
SAGET Shinji
Si quieres hacerlo más corto, puedes escribir:
import matplotlib.pyplot as plt
for i in range(4):
plt.subplot(2,2,i+1).set_title(f'Subplot n°{i+1}')
plt.show()
Tal vez lo hace menos claro, pero no necesita más líneas o variables
Una solución que tiendo a usar cada vez más es esta:
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
- Crea tu número arbitrario de ejes
- axs.ravel() convierte su objeto de 2 dim en un vector de 1 dim en estilo de fila principal
- asigna el título al objeto-eje actual
Derlin
En caso de que tenga varias imágenes y quiera recorrerlas y mostrarlas 1 por 1 junto con los títulos, esto es lo que puede hacer. No es necesario definir explícitamente ax1, ax2, etc.
- El problema es que puede definir ejes dinámicos (ax) como en la Línea 1 del código y puede establecer su título dentro de un bucle.
- Las filas de la matriz 2D son la longitud (len) del eje (ax)
- Cada fila tiene 2 elementos, es decir, es una lista dentro de una lista (Punto No.2)
- set_title se puede usar para establecer el título, una vez que se seleccionan los ejes (ax) o la subparcela adecuados.
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))
Wojciech Moszczyński
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()