Ejemplos de MatPlotLib:
Índice de la página:
Leyendas.
-------------------------------------------------------------------------------
EJEMPLOS:Leyendas:
plt.figure(figsize=(10, 5)) # Lienzo en el que se van a depositar los gráficos (10=Ancho, 5=Alto)
plt.plot(x, x ** 2, 'r', label='Cuadrado') # x al cuadrado
plt.plot(x, x ** 3, 'b', label='Cubo') # x al cubo
plt.legend(loc=2); # Crea la leyenda con y con loc=2 la coloca arriba a la izquierda
MULTIGRÁFICOS:
Definición de una matriz de gráficos, estilos de líneas y marcadores:
x = np.linspace(0, 5, 11) # De 0 a 5 con 11 puntos de contacto
y = x ** 2 # y es igual a x al cuadrado
plt.subplot(1, 2, 1) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 1
plt.plot(x, y, 'r--') # Lo pinta en rojo y con línea discontinua (con un solo guión sería línea continua)
plt.subplot(1, 2, 2) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 2
plt.plot(y, x, 'g*-'); # Lo pinta en verde y con línea continua y con un * en cada uno de los 11 puntos de contacto
y = x ** 2 # y es igual a x al cuadrado
plt.subplot(1, 2, 1) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 1
plt.plot(x, y, 'r--') # Lo pinta en rojo y con línea discontinua (con un solo guión sería línea continua)
plt.subplot(1, 2, 2) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 2
plt.plot(y, x, 'g*-'); # Lo pinta en verde y con línea continua y con un * en cada uno de los 11 puntos de contacto
Lienzo para el o los gráficos sean mayores:
plt.figure(figsize=(15, 5)) # Lienzo en el que se van a depositar los gráficos (15=Ancho, 5=Alto)
plt.subplot(1, 2, 1) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 1
plt.plot(x, y, 'r--') # Lo pinta en rojo y con línea discontinua (con un solo guión sería línea continua)
plt.subplot(1, 2, 2) # Matriz de gráficos de una sola fila y 2 columnas y muestra el gráfico 2
plt.plot(y, x, 'g*-'); # Lo pinta en verde y con línea continua y con un * en cada uno de los 11 puntos de contacto
# lw (grueso de la línea)
# markersize (grueso del marcador)
# markerfacecolor (color del interior del marcador)
# markerfacecolor (color del borde del marcador)
# markeredgewidth (grueso del borde del marcador)
plt.plot(y, x, 'g*-', lw=3, markersize=20, markerfacecolor='r', markeredgewidth=3, markeredgecolor='k');
Cambiar límites de ejes:
plt.plot(x, x ** 2) # x al cuadrado
plt.plot(x, x ** 3) # x al cubo
plt.xlim([2, 4]) # Vemos los valores del eje x entre 2 y 4
plt.ylim([0, 80]); # Vemos los valores del eje y entre 0 y 80
Gráfico de Caja y Bigote:
datos = [np.random.normal(0, des, 100) for des in range(1, 4)]
plt.boxplot(datos);
Poner Texto dentro del Gráfico:
plt.text(0.5, 0.5, 'Hola mundo', ha='center', family='arial', fontsize=20, rotation=45, weight='bold', color=('#006400'), backgroundcolor='yellow')
0.5, 0.5 (coordenadas donde queremos el texto)
Hola mundo (texto a escribir)
ha='center' (alineamiento horizontal en el centro)
va='top' (alineamiento vertical parte superior)
va='top' (alineamiento vertical parte superior)
family (tipo de fuente)
fontsize (alto de las letras del texto)
rotation (rotación que le damos al texto)
weight (negrita)
color (color del texto)
backgroundcolor (color del fondo del texto).
(Si hemos de entrar muchas veces un texto en otro lugar del gráfico, creamos una función, de esta forma solo tenemos que llamar a la función y meterle las coordenadas de la nueva situación)
def texto(x,y,texto1):
ax.text(x,y,texto1, ha = 'center', weight='bold', color = 'blue', backgroundcolor = 'white', va = 'top')
texto(0.03, 3.8, 'Tick mayor') # Llamada a la función texto poniéndole coordenadas y texto a introducir.
rotation (rotación que le damos al texto)
weight (negrita)
color (color del texto)
backgroundcolor (color del fondo del texto).
(Si hemos de entrar muchas veces un texto en otro lugar del gráfico, creamos una función, de esta forma solo tenemos que llamar a la función y meterle las coordenadas de la nueva situación)
def texto(x,y,texto1):
ax.text(x,y,texto1, ha = 'center', weight='bold', color = 'blue', backgroundcolor = 'white', va = 'top')
texto(0.03, 3.8, 'Tick mayor') # Llamada a la función texto poniéndole coordenadas y texto a introducir.
Crear un círculo:
(Una vez hecha la importación de "from matplotlib.patches import Circle") 0.5, 0.5 (coordenada X, coordenada Y de donde queremos el círculo)
0.15 (radio del círculo)
lw = 1 (grueso de la línea)
edgecolor (color del borde del círculo)
facecolor=(0,0,0,0.05) (color del relleno del círculo, el cuarto parámetro es la transparencia)
clip_on=False (no se puede extender más allá del límite del eje X)
circulo = Circle((0.5, 0.5), 0.15, lw=1, edgecolor='black', facecolor=(0,0,0,0.05))
ax.add_artist(circulo) #hay que añadirlo para que se dibuje en el gráfico)
(Si hemos de entrar muchas veces un círculo igual pero en otro lugar del gráfico, creamos una función, de esta forma solo tenemos que llamar a la función y meterle las coordenadas de la nueva situación)
def circulo(x,y):
circulo1 = Circle((x,y), 0.15, linewidth=1, edgecolor = 'black', facecolor = (0,0,0,0.02), clip_on = False)
ax.add_artist(circulo1)
circulo(0.5, 0.5) # llamada a la función circulo hemos de ponerle la coordenada X y la Y
Límite de los ejes:
ax.set(xlim = [0, 4], ylim = [0, 4]) # Tanto el eje x como el y que vayan de 0 a 4.
Cambiar el tamaño de la línea de los tick mayores y menores:
ax.tick_params(which='major', width=1.0, length=10) # Modificamos el tamaño de la línea de los tick mayores
ax.tick_params(which='minor', width=1.0, length=5) # Modificamos el tamaño de la línea de los tick menores
Darles valor a las etiquetas de los ticks del eje x:
(Hemos de crear una función para que calcule los intervalos con respecto a un todo)
def tick_menor_x(x, pos):
if not x % 1.0: #Con el condicional le digo que no me toque los ticks mayores
return ""
else:
return "%.2f"% x
ax.xaxis.set_minor_formatter(FuncFormatter(tick_menor_x)) # damos valor a los ticks menores en el eje x llamando a la función que hemos creado.
Ponemos cuadrícula (grid) a los ticks mayores y menores:
(alpha es la transparencia)
ax.grid(which='major', linestyle = '--', linewidth = 0.5, color = 'grey', alpha=0.9) # grid a los ticks mayores
ax.grid(which='minor', linestyle = '--', linewidth = 0.5, color = 'grey', alpha=0.2) # grid a los ticks menores