. . . 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=Nonefigsize=Nonedpi=Nonefacecolor=Noneedgecolor=Noneframeon=TrueFigureClass=<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=Nonelabels=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.
labelsMatriz (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





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