MatPlotLib (librería de visualización):
Índice de la página:
Descripciones.
Importar.
Comandos.
Tipos de Gráficos.
Comandos.
Tipos de Gráficos.
Referencias.
-------------------------------------------------------------------------------
Descripciones:Pandas se conecta directamente con Matplotlib.
Ticks.- Son las marquitas en los ejes.
lw (es igual que linewidth) grueso de la línea.
c (es igual que color).
ha (alineamiento horizontal)
va (alineamiento vertical)
Para quitar el texto que pinta encima del gráfico, al final de la última línea poner (punto y coma)
Marcadores.- Son las marcas sobre la línea del gráfico. Alias para Tipos de marcadores:
. (punto).
o (círculo).
^ (triángulo).
s (cuadrado).
* (estrella).
+ (cruz).
x (aspa).
d (diamante)
Alias para Estilos de líneas del gráfico:
- (línea continua).
-- (línea discontinua).
-. (línea de puntos y rayas).
: (línea de puntos)
Alias para Colores de líneas del gráfico:
b (azul)
g (verde)
r (rojo)
c (cian)
m (magenta)
y (amarillo)
k (negro)
w (blanco)
Estilos de gráficos:
# HAY MÁS PERO ESTOS SON LOS QUE PUEDEN SERVIRME
plt.style.use('default') # Restaura el style por defecto a Matplotlib original.mpl.rcParams.update(mpl.rcParamsDefault) # Resetea Matplotlib al estado original por defecto
plt.style.use('bmh') # Con recuadro gris y con grid
plt.style.use('classic') # Con recuadro gris y sin grid
plt.style.use('dark_background') # Todo negro sin grid
plt.style.use('seaborn-poster') # Sin recuadro con grid y grande
plt.style.use('Solarize_Light2') # Muy correcto grande color calabaza
plt.style.use('Solarize_Light2') # Muy correcto grande color calabaza
---------------------------------------------------------
Importar:
import matplotlib.pyplot as plt # Paquete general (Importación más común).
%matplotlib inline # Esto es para que los gráficos se muestren todos dentro de la interfaz de Jupyter
import pylab as pl
import matplotlib as mpl # Para poder restaurar los valores por defecto de Matplotlib.
from matplotlib.ticker import MultipleLocator, AutoMinorLocator, FuncFormatter # Estas funciones son para los ticks.
from matplotlib.patches import Circle # Para crear círculos dentro de una gráfica.
import seaborn as sns # Librería para mejorar los gráficos de Matplotlib
---------------------------------------------------------
Comandos:
x = np.linspace(0, 5, 11) # De 0 a 5 con 11 marcadores sobre la línea.
y = x ** 2 # y es igual a x al cuadrado
plt.xlabel('Eje x') # Pone el nombre del eje x (el horizontal)
plt.ylabel('Eje y') # Pone el nombre del eje y (el vertical)
plt.plot(x, y, 'r') # Dibuja el gráfico con la línea en Rojo (r es el alias del color red)
plt.title('Titulo', fontsize=20) # Pone el título al gráfico (con el ; no vemos la línea de texto encima del gráfico)
plt.legend(loc=2); # Crea la leyenda con y con loc=2 la coloca arriba a la izquierda
plt.savefig('Nombre_Grafico.png') # Guardar el gráfico, admite muchas extensiones para guardar el gráfico
plt.grid() # Añade una cuadrícula.plt.style.available # Para ver todos los estilos del gráfico
plt.show() # Muestra el gráfico con todo lo que tenemos introducido y quita el texto que sale encima del gráfico
%matplotlib notebook # Función para hacer que los gráficos de Matplotlib y jupyter sean inter-activos
%matplotlib notebook # Función para hacer que los gráficos de Matplotlib y jupyter sean inter-activos
Figura:
matplotlib.pyplot.
figure
(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False)num: (entero o cadena, opcional, predeterminado: None (ninguno).
Si no se proporciona, se creará una nueva figura y el número de la figura se incrementará. La figura
objetos contiene este número en un
number
atributo. Si se proporciona num y ya existe una figura con estaidentificación, actívela y le devolverá una referencia. Si esta figura no existe, créala y devuélvela. Si num
es una cadena, el título de la ventana se establecerá en el de esta figura
num
.figsize: (flotante "float", flotante "float"), opcional, predeterminado: None (ninguno).
Ancho, alto en pulgadas. Sino se proporciona, el valor predeterminado es =
.
rcParams["figure.figsize"] = [6.4, 4.8]
[6.4, 4.8]
dpi: (entero "integer), opcional, predeterminado: None (ninguno).
Resolución de la figura. Si no se proporciona, el valor predeterminado es =
.
rcParams["figure.dpi"] = 100.0
100
facecolor: (Color del fondo de la figura). Si no se proporciona, el valor predeterminado es =
.
rcParams["figure.facecolor"] = 'white'
'w'
edgecolor: (Color del borde de la figura). Si no se proporciona, el valor predeterminado es =
.
rcParams["figure.edgecolor"] = 'white'
'w'
frameon: (bool, opcional). Predeterminado: True
Si es False, suprime el dibujo del marco de la figura.
FigureClass: (Subclase de Figura)
Opcionalmente, use una Figura instancia personalizada.
clear: (bool, opcional). Predeterminado: False.
Si es True y la figura ya existe, entonces se borra.
# definimos 2 objetos y le ponemos el tamaño en pulgadas a la figura.
fig, ax = plt.subplots(figsize = (15,8))
Ticks:
matplotlib.pyplot.
xticks
(ticks=None, labels=None)Son las marcas rallitas en los ejes X e Y.
ticks: Matriz (Array): Una lista de posiciones en las que se deben colocar los ticks. Puede pasar una lista vacía para deshabilitar xticks.
labels: Matriz (Array), opcional. Una lista de etiquetas explícitas para colocar en los locs dados.
#cambiando los múltiplos de los ticks
ax.xaxis.set_major_locator(MultipleLocator(1)) # Tick Mayores Va de cero a 1 en el eje x
ax.xaxis.set_minor_locator(AutoMinorLocator(4)) # Tick Menores queremos 4 ticks menores entre cada tick mayor en el eje x
ax.yaxis.set_major_locator(MultipleLocator(1)) # Tick Mayores Va de cero a 1 en el eje y
ax.yaxis.set_minor_locator(AutoMinorLocator(4)) # Tick Menores queremos 4 ticks menores entre cada tick mayor en el eje y
Cambiar el tamaño de la marca (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.
Otra función para dar formato al eje x:
# ticks (hay que crear la función porque no lo puedo hacer de otra forma)
def formato(x, pos):
return "%.0f mil likes"%(x / 1000) #formato con o decimales
#ponemos los parámetros de las etiquetas de los ticks del eje x
ax.set_xticklabels(list(ax.get_xticks()), fontname = "fantasy", fontsize = 13)
ax.xaxis.set_major_formatter(FuncFormatter(formato)) # formatea las etiquetas del eje x
#ponemos los parámetros de las etiquetas de los ticks del eje y
ax.set_yticklabels(list(ax.get_yticks()), fontname = "fantasy", fontsize = 13)
Leyenda:
# shadow (levanta el marco de la leyenda creando una especie de sombra)
# prop (son las propiedades del texto)
ax.legend(shadow = True, prop = {"family":"Serif", "size":15})
ax.legend() # Si solo queremos ver sin propiedades.
Cuadrícula (Grid):
(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
Eje X:
# fontname (nombre de la fuente)
# fontsize (altura de la fuente)
ax.set(xlim = [0,4], ylim = [0,4]) # Límite de los ejes van de 0 a 4 los 2 ejes
ax.set_xlabel('Eje de la x') # Leyenda del eje x (sin parámetros)
ax.set_ylabel('Eje de la y') # Leyenda del eje y (sin parámetros)
ax.set_ylabel("Calificación en imdb", fontname = "fantasy", fontsize = 20) # etiqueta eje y
Eje Y:
atriz de gr
Introducir Flechas y Texto:
atriz de gr
Tratamiento de Fechas:
atriz de gr
Líneas del Gráfico:
# Las 2 Lineas del gráfico (X, Y1) (X, Y2)
ax.plot(X, Y1, color = (0,104/255,139/255), lw = 2, label = 'Señal Azul') #Línea del gráfico (X, Y1)
ax.plot(X, Y2, c = (0,100/255,0), lw = 2, label = 'Señal Verde') #Línea del gráfico (X, Y2)
Título:
# fontname (nombre de la fuente)
# fontsize (altura de la fuente)
# va = "bottom" (orientación vertical encima)
ax.set_title('Anatomia de una figura', fontsize = 20) # Leyenda del Título
ax.set_title("Críticas y Popularidad", fontname = "fantasy", fontsize = 35, va = "bottom")
Multigráficos:
x = np.linspace(0, 5, 11) # De 0 a 5 con 11 marcadores sobre la línea.
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
plt.figure(figsize=(15, 5)) # Lienzo en el que se van a depositar el o los gráficos (15=Ancho, 5=Alto)
plt.tight_layout() # Separa los gráficos automáticamente para que ninguno pise a ninguno.
---------------------------------------------------------
Tipos de Gráficos:
plt.scatter(x, y) # Gráfico de puntos (dispersión)
plt.hist(np.random.choice(np.arange(1000), 100)) # Gráfico de Histograma.
plt.boxplot(datos) # Gráfico de Caja y Bigotes
plt.pie(datos) # Gráfico de Tartas
---------------------------------------------------------
Referencias:
Web de curso Matplotlib: https://www.udemy.com/cart/success/227554044/
Web de colores: http://cloford.com/resources/colours/500col.htm
MatplotliB: Gráficas usando pylab: https://claudiovz.github.io/scipy-lecture-notes-ES/intro/matplotlib/matplotlib.html#valores-por-defecto
---------------------------------------------------------