Este es un documento de ejemplo para ilustrar algunas de las características de IPython Notebooks. Un IPython notebook es otra herramienta de programación literaria, similar a R Markdown. Sin embargo, en este caso está diseñada para utilizarse con el lengauje de programación Python.
IPython es un intérprete de Python que ofrece muchas características avanzadas, poniéndo especial interés en facilitar la programación interactiva y la compartición rápida de información en programación científica. En esta línea, los notebooks proporcionan un método muy sencillo y eficiente para crear y organizar documentación de programación científica con Python que, además, permite editar y modificar los contenidos, así como evaluar los resultados de inmediato. Esto es posible gracias a que cada notebook cuenta con un intérprete de Python ejecutándose en segundo plano, que evalua las secciones de código insertadas y devuelve los resultados. La interfaz es accesible desde cualquier navegador web, trabajando en modo local (normalmente http://localhost:8888).
Para instalar IPython e IPython notebook solo hay que seguir estas instrucciones. Si Python no está instalado por defecto en nuestro sistema operativo, la opción más recomendable es descargar e instalar directamente una distribución para programación científica en Python, como por ejemplo Anaconda.
Por otro lado, se pueden consultar también numerosos ejemplos de notebooks creados por otros usuarios, y disponibles en el proyecto nbviewer. Por último, indicar que las partes de IPython independientes del lenguaje Python se han abstraído para crear el proyecto Jupyter, que permite la creación de documentos de programación interactiva utilizando múltiples lenguajes.
Documentación para comenzar a utilizar IPython notebook.
La estructura del documento se divide en celdas (similares al concepto de chunks en R Markdown). Cada celda es independiente del resto y la podemos editar, modificar y ejecutar (si se trata de código) individualmente. También podemos modificar fácilmente su posición en el documento mediante los controles intuitivos que nos ofrece la interfaz web.
Obviamente, el objetivo más interesante es integrar código y texto en un mismo documento. La siguiente celda de código muestra un ejemplo de como conseguirlo. No hay más que crear una celda nueva (con el botón Agregar celda
en el menú superior). Elegimos como tipo de contenido Code
(si fuese texto como esta celda que estás leyendo, elegimos Markdown
para utilizar la sintaxis de marcado que ya conocemos).
Ejemplo basado en http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps y https://wakari.io/nb/url///wakari.io/static/notebooks/Lecture_4_Matplotlib.ipynb.
In [62]:
# coding:utf-8
import numpy as np
vector = np.array([1,2,3,4])
matriz = np.array([[1, 2], [3, 4]])
print (type(vector), type(matriz))
print "Forma del objeto vector: %d" % vector.shape
print "Tamaño del objeto vector: %d" % vector.size
print "Forma del objeto matriz: %s" % str(matriz.shape)
print "Tamaño del objeto matriz: %d" % matriz.size
In [51]:
# Mostrar imágenes generadas por matplotlib en el propio documento
# en lugar de en una nueva ventana
%pylab inline
In [25]:
x = linspace(0, 4*pi)
y = sin(x) + cos(x)
plot(x, y, 'r')
x
Out[25]:
In [63]:
yrand = randn(1000)
print yrand[0:10]
plot(yrand)
Out[63]:
In [15]:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
def flux_qubit_potential(phi_m, phi_p):
return 2 + alpha - 2 * cos(phi_p)*cos(phi_m) - alpha * cos(phi_ext - 2*phi_p)
alpha = 0.7
phi_ext = 2 * pi * 0.5
phi_m = linspace(0, 2*pi, 100)
phi_p = linspace(0, 2*pi, 100)
X,Y = meshgrid(phi_p, phi_m)
Z = flux_qubit_potential(X, Y).T
fig = plt.figure(figsize=(14,6))
# El argumento projection='3d' en add_subplot hace que el objeto reconozca un entorno 3D
ax = fig.add_subplot(1, 2, 1, projection='3d')
p = ax.plot_surface(X, Y, Z, rstride=4, cstride=4, linewidth=0)
# surface_plot con gradiente y barra en color
ax = fig.add_subplot(1, 2, 2, projection='3d')
p = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
cb = fig.colorbar(p, shrink=0.5)
También es posible insertar tablas y fórmulas. Los principios son similares a R Markdown, ya que también se utiliza MathJax para renderizar las fórmulas en el documento HTML.
Al igual que en en el caso de R Markdown, se pueden incluir en línea ($y = f(x) = x^2$ para $x > 0$) o por separado:
$$Pr(Y \in A)=\sum_{y \in A} p(y)$$$$Pr(Y \in A)=\int_{y \in A} p(y)dy$$Ejemplo de inserción de una imagen:
In [ ]: