. . . MatPlotLib

MatPlotLib (librería de visualización):

Índice de la página:
Descripciones.
Importar.
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
---------------------------------------------------------

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 



Figura:
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False)

Es el tapiz que contiene todos los elementos ya sea de un gráfico o de varios gráficos, todos están dentro de una misma figura 
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 esta
          identificació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.0100 
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_xlabel("Likes en Facebook", fontname = "fantasy", fontsize = 20) # etiqueta eje x
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





---------------------------------------------------------