<jupyter_start><jupyter_text>Importar librerías<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline<jupyter_output><empty_output><jupyter_text>Simple plot<jupyter_code># Datos para plotting
t = np.arange(0.0, 2.0, 0.01)             # np.arange(inicio,fin,paso)
y = np.sin(2 * np.pi * t)

# Plotting los datos
plt.xlabel('Etiqueta en el eje x')                  
plt.ylabel('Etiqueta en el eje y')
plt.title('Mi primer plot')
plt.grid()                                # poner grilla  
plt.plot(t,y)
plt.show()<jupyter_output><empty_output><jupyter_text>¿Cómo ajustar los valores predeterminados?  Matplotlib permite ajustar los valores que vienen por defecto, esto con el fin de crear un gráfico a nuestras necesidades. A continuación se dará paso a cómo modificar el color, cambiar los ejes, el ancho de la linea, insertar leyendas, entre otros.<jupyter_code># Crear una nueva figura de tamaño 8x6 pulgadas, usando 100 puntos por pulgada
plt.figure(figsize=(8,6))
plt.subplot(111)
# Establece un marco para crear nuestro plot al interior de la figura recién creada

x = np.linspace(-np.pi, np.pi, 256)     # np.linspace(inicio,fin,particiones)
y1,y2 = np.cos(x), np.sin(x)

# graficar la función y1 (coseno) usando color azul con una linea continua de ancho 1
plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-")

# graficar la función y2 (seno) usando color rojo con un estilo de línea "dot-dashed" y ancho 1
plt.plot(x, y2, color="red", linewidth=1.0, linestyle="-.")


#Mostrar resultado en la pantalla
plt.show()<jupyter_output><empty_output><jupyter_text>Establecer las marcas (ticks) y etiquetas (tick labels) en los ejes<jupyter_code>plt.figure(figsize=(8,6))
plt.subplot(111)

x = np.linspace(-np.pi, np.pi, 256)    
y1,y2 = np.cos(x), np.sin(x)
plt.plot(x, y1, color="blue", linewidth=1.3, linestyle="-")
plt.plot(x, y2, color="red", linewidth=1.4, linestyle="-.")


# ajustar x,y ticks
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])

# ajustar límites
plt.xlim(x.min()*1.1, x.max()*1.1)

#Mostrar resultado en la pantalla
plt.show()<jupyter_output><empty_output><jupyter_text>Ajustar la posición de los _spines_ Las _spines_ son las líneas que detentan las marcas de los ejes y sirven como referencia del área cubierta por los datos. Se pueden colocar en posiciones arbitrarias, aunque hasta ahora estaban en el borde de la figura. Cambiaremos eso para tenerlos en el medio.<jupyter_code>plt.figure(figsize=(8,6))

# Note que el recuadro que contendrá a la figura puede ser asignado a una
# variable, de modo que para modificar las propiedades del gráfico lo hacemos
# directamente a través de los atributos de esa variable
ax = plt.subplot(111)

# mover espinas
ax.spines['right'].set_color('none')    
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))


x = np.linspace(-np.pi, np.pi, 256)    
y1,y2 = np.cos(x), np.sin(x)
# En la siguiente línea, vamos a añadir un label a cada línea para insertar legendas
plt.plot(x, y1, color="blue", linewidth=1.3, linestyle="-",label = 'cos(X)') 
plt.plot(x, y2, color="red", linewidth=1.4, linestyle="-.",label = 'sin(X)')
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])
plt.xlim(x.min()*1.1, x.max()*1.1)

# añadir legendas
plt.legend()

plt.show()<jupyter_output><empty_output><jupyter_text>Colocar anotaciones en algunos puntos   Vamos a marcar algunos puntos interesantes usando el comando annotate. Elegimos el valor 2π/3 y queremos marcar tanto el seno como el coseno. Primero dibujaremos un marcador en la curva, así como una línea punteada recta. Luego, usaremos el comando annotate para mostrar texto con una flecha.<jupyter_code>plt.figure(figsize=(8,6))
ax = plt.subplot(111)

ax.spines['right'].set_color('none')    
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

x = np.linspace(-np.pi, np.pi, 256)    
y1,y2 = np.cos(x), np.sin(x)

# añadir label para insertar legendas
plt.plot(x, y1, color="blue", linewidth=1.3, linestyle="-",label = 'cos(X)') 
plt.plot(x, y2, color="red", linewidth=1.4, linestyle="-.",label = 'sin(X)')

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])
plt.xlim(x.min()*1.1, x.max()*1.1)

# Anotación de puntos

t = 2*np.pi/3
# La siguiente línea crea el segmento vertical azul
plt.plot([t,t],[0,np.cos(t)],color ='blue',  linewidth=1.5, linestyle="--")

# La siguiente línea grafica el punto deseado. El uso del formato "ob" indica que
# queremos usar marcadores circulares de color azul.
# Se sugiere ver la ayuda plt.plot para conocer todas las posibilidades sobre los
# tipos de marcadores, tipos de línea, etc.
plt.plot([t],[np.cos(t)], "ob",markersize = 7)

# El uso de la r antes de una secuencia de caracteres nos permite utilizar la sintaxis
# de latex para embellecer los textos. Examine la yuda del comando en caso de dudas
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
             xy=(t, np.sin(t)),  xycoords='data',
             xytext=(+10, +30), textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.plot([t,t],[0,np.sin(t)],color ='red',  linewidth=1.5, linestyle="--")
plt.plot([t],[np.sin(t)], "or",markersize = 7)
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
             xy=(t, np.cos(t)),  xycoords='data',
             xytext=(-90, -50), textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# ubicar la legenda en la parte superior izquiera de la ventana, y que no tenga recuadro alrededor
plt.legend(loc='upper left', frameon=False)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1758454106280193, 'fraction_numerical': 0.027214170692431563, 'mean_word_length': 4.6463636363636365, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '53543', 'license': 'CC0-1.0', 'n_tokens_mistral': 2616, 'n_tokens_neox': 2498, 'n_words': 621, 'path': 'Notebooks/nb_06_visualizacion.ipynb', 'repo_name': 'juan-pineda/catedra_computacional', 'size': '6210'}