Comencé con matplot y manejé algunos gráficos básicos, pero ahora me resulta difícil descubrir cómo hacer algunas cosas que necesito ahora :(
Mi pregunta real es cómo colocar un título global y una leyenda global en una figura con subtramas.
Estoy haciendo subtramas 2x3 donde tengo muchos gráficos diferentes en varios colores (alrededor de 200). Para distinguir (la mayoría) de ellos escribí algo como
def style(i, total):
return dict(color=jet(i/total),
linestyle=["-", "--", "-.", ":"][i%4],
marker=["+", "*", "1", "2", "3", "4", "s"][i%7])
fig=plt.figure()
p0=fig.add_subplot(321)
for i, y in enumerate(data):
p0.plot(x, trans0(y), "-", label=i, **style(i, total))
# and more subplots with other transN functions
(¿Alguna idea sobre esto? :)) Cada subtrama tiene la misma función de estilo.
Ahora estoy tratando de obtener un título global para todas las subtramas y también una leyenda global que explique todos los estilos. También necesito hacer que la fuente sea pequeña para que se ajuste a los 200 estilos allí (no necesito estilos completamente únicos, pero al menos algún intento)
¿Alguien puede ayudarme a resolver esta tarea?
fuente
Respuestas:
Título global : en las versiones más recientes de matplotlib, se puede usar el método Figure.suptitle () de
Figure
:Alternativamente (basado en el comentario de @Steven C. Howell a continuación (¡gracias!)), Use la función matplotlib.pyplot.suptitle () :
fuente
import matplotlib.pyplot as plt
el comando podría ingresarse simplemente comoplt.figure(); plt.suptitle('Title centered above all subplots'); plt.subplot(231); plt.plot(data[:,0], data[:,1]);
etc ...Además de la respuesta de orbeckst, es posible que también desee cambiar las subtramas hacia abajo. Aquí hay un MWE en estilo OOP:
da:
fuente
Para las etiquetas de leyenda, puede usar algo como a continuación. Las etiquetas de leyenda son las líneas de trama guardadas. modFreq es donde el nombre de las etiquetas reales correspondientes a las líneas de la trama. Luego, el tercer parámetro es la ubicación de la leyenda. Por último, puede pasar cualquier argumento como lo he hecho aquí, pero principalmente necesito los tres primeros. Además, se supone que debe hacerlo si establece las etiquetas correctamente en el comando de trazado. Simplemente llame a la leyenda con el parámetro de ubicación y encuentre las etiquetas en cada una de las líneas. He tenido más suerte haciendo mi propia leyenda como se muestra a continuación. Parece funcionar en todos los casos en los que nunca pareció haber hecho lo contrario. Si no entiende, avíseme:
También puede usar la pierna para cambiar el tamaño de fuente o casi cualquier parámetro de la leyenda.
El título global como se indica en el comentario anterior se puede hacer agregando texto según el enlace proporcionado: http://matplotlib.sourceforge.net/examples/pylab_examples/newscalarformatter_demo.html
fuente
suptitle
parece el camino a seguir, pero por lo que vale,figure
tiene unatransFigure
propiedad que puede usar:fuente