Paloma Recuero de los Santos Florence Nightingale, pionera en el uso de datos para la salud Florence Nightingale es conocida por sentar las bases de la profesionalización de la enfermería. Sin embargo, mucha gente desconoce que fue su trabajo visionario en el campo de la...
Bernardo Campillo Soto Artificial Intelligence of Things, o cómo las cosas planean hacernos la vida más sencilla Al igual que en aquel cuento de los hermanos Grimm dos duendecillos se aliaron para ayudar al zapatero a tener una vida mejor, la inteligencia artificial y las tecnologías...
Paloma Recuero de los Santos Python para todos: Diferencia entre método y función Cuando damos nuestros primeros pasos en Python, nos encontramos con dos conceptos muy similares que nos pueden llevar a confusión: funciones y métodos. En este post, intentaremos aclarar esta...
Imran Ladak Lo más destacado del BDID2017 (II) Chema Alonso: “Big Data: Innovación sin limites” El pasado martes 31 de octubre celebramos el Big Data Innovation Day 2017, el evento anual de LUCA con motivo del primer aniversario. No podemos estar más agradecidos por...
Alicia Martín Domingos Cómo optimizar la gestión de stock y almacenes ¿Alguna vez has visto cómo llega la mercancía a los almacenes de una tienda? Hace años, un operario descargaba la mercancía y con un listado en papel iba revisando...
LUCA Planificando la ubicación de un site de retail con los datos Una de las decisiones de negocio clave para cualquier marca es decidir dónde “establecer su tienda”. Esto implica la necesidad de conocer muy bien a los consumidores y su...
LUCA Diseñando el mapa de publicidad OOH en Brasil gracias a los datos Es imprescindible que una empresa maximice el alcance de sus clientes, y una manera de conseguirlo es hacer uso del poder y valor que ofrece la publicidad. Hoy en...
LUCA Caso de éxito: Big Data para aumentar el impacto en el turista, con Iberostar En esta historia con datos, hablamos sobre una de las principales aplicaciones que el Big Data y la Inteligencia Artificial pueden tener en el sector turismo. En este caso, Iberostar, la...
LUCA Recap LUCA Talk: Creando un chatbot con Microsoft Bot Framework Los chatbots cada vez son más populares y se están convirtiendo en herramientas importantes para las empresas de cara a la gestión de sus productos e iteración con sus...
Ane Urain LUCA Talk: Big Data y ciudades inteligentes, ¿ciencia o ficción? Las ciudades se están convirtiendo en entornos cada vez más complejos donde la gestión de grandes volúmenes de datos es cada vez más un requerimiento para mejorar los servicios...
Paloma Recuero de los Santos Video Post #9: Analíticas Big Data, sí, pero ¿Cuáles? Sabemos que las analíticas avanzadas Big Data son imprescindibles para no perder la comba de la innovación digital. Lo que no tenemos tan claro es qué tipo de...
LUCA Talk: La importancia de la seguridad y aspectos legales en el gobierno de los datos. FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 3 de marzo, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: Desde la Comisión Europea se está definiendo y escribiendo...
Python para todos: Matplotlib y la curva corazónPaloma Recuero de los Santos 12 febrero, 2021 Hoy os proponemos aprender a realizar visualizaciones sencillas con Python. Y, como siempre nos gusta hacer un guiño a San Valentín (reconozcámoslo, es muy cursi, pero tiene su gracia ;), vamos a trabajar sobre curvas corazón. Para poder decir “Te quiero”, con matemáticas, y con Python. ¿Conoces matplotlib? Matplotlib es la librería de visualización más popular de Python. Aunque es algo antigua, fue creada en 2003, se ha instaurado como la librería de referencia para visualizaciones. Es cierto que, con el paso de los años, otras librerías como seaborn, ggplot, Bokeh, o Plotly ofrecen visualizaciones más atractivas o una interfaz mucho más cómoda. Sin embargo, estas otras librerías de más alto nivel no siempre ofrecen toda la funcionalidad que nos interesa. En estos casos, siempre podemos recurrir directamente a matlotlib. No en balde, se han desarrollado sobre ella. En definitiva, aunque matplotlib es una librería de bajo nivel que puede resultar algo confusa en ocasiones, pero es tan potente y extensa que merece la pena aprender a utilizarla. Además, su gran compatibilidad con diferentes sistemas operativos y entornos de ejecución, ayudó a su rápida adopción por parte de la comunidad. Esto facilita mucho encontrar respuesta a cualquier duda o problema que nos pueda surgir. Podemos acceder a la documentación completa en el sitio web oficial de matplotlib.org. Un ejemplo sencillo Empecemos con un ejemplo sencillo. Como siempre, para poder hacer uso de cualquier función de una librería, tenemos que importarla. Podemos importar la sub-librería pyplot, que contiene la mayoría de las funciones, import matplotlib.pyplot as plt o la librería completa: import matplotlib as mpl Para este ejemplo, importaremos también la libreía numérica NumPy. Para dibujar un corazón podemos recurrir a distintas ecuaciones. En la web podemos encontrar varias páginas muy interesantes y entretenidas sobre este tema, como ésta Heart Curve, o esta otra de WolframAlpha. En este primer ejemplo, elegimos la ecuación: Si despejamos la y nos quedarán las siguientes expresiones: Y la visualizamos con Python. La función plot crea automáticamente los ejes de coordenadas y muestra la gráfica de la función (en este caso son dos), para los valores de x definidos por la función numpy.linspace. #Ejemplo sencillo de curva corazón #En primer lugar, importamos las librerías import numpy as np import matplotlib.pyplot as plt #Para ver la gráfica en esta misma ventana %matplotlib inline # Definimos los valores para x según la sintaxis # numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) x = np.linspace(-1,1,1000) # Ecuación de la curva superior y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) #Ecuación de la curva inferior y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) #Dibujamos las curvas para cada valor de x, con el color c y anchura lw plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) #Mostramos la gráfica plt.show() Ya tenemos nuestro primer corazón: Aplicando estilos Las versiones más recientes de matplotlib permiten aplicar estilos que dan un aspecto más atractivo a las gráficas. Podemos ver los estilos disponibles con esta instrucción: plt.style.available: Aplicarlos, es muy sencillo. Con esta pequeña modificación del código, import numpy as np import matplotlib.pyplot as plt plt.style.use("dark_background") %matplotlib inline x = np.linspace(-1,1,1000) #numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) plt.show() Nuestra gráfica tiene ahora este aspecto: Personalizando: tamaño, título, color Podemos personalizar nuestras gráficas aún mas. Por ejemplo, podemos cambiar el tamaño con el parámetro figsize. Los valores por defecto son [6.4, 4.8] pulgadas ancho/alto. Con las funciones facecolor y suptitle, definimos el color del fondo de la gráfica, y añadimos un título. #Cambio tamaño, Título, color etc plt.figure(figsize=(3.2, 2.4), facecolor="#009933") y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) plt.suptitle('Corazón en Python', fontsize=16) plt.show() Y nos quedaría algo así: Como siempre, es cuestión de ir explorando las distintas opciones, probar. Y plantearse un desafía algo más difícil cada vez. Probamos otras curvas corazón Después de estas sencillas nociones sobre matplotlib, no nos podemos resistir a probar la visualización de otras curvas cuya representación gráfica se asemeja a un corazón. Segunda curva corazón Por ejemplo, si probamos con la segunda curva corazón de WolframAlpha, vemos que resulta sencillo copiar las fórmulas (con la opción de “Plain text”) y transformarlas para dibujarlas con Python. En este caso, vamos a usar al librería sympy para matemática simbólica y la función plot_parametric:. También necesitaremos cargar la librería math para poder usar las funciones trigonométricas. Sin embargo, resulta muy sencillo crear esta visualización. Las ecuaciones paramétricas copiadas como texto plano: x(t) = a sin(t) cos(t) log(abs(t))y(t) = a (t^2)^(3/20) sqrt(cos(t)) Sólo requieren la adición de signos “*” para representar las operaciones de producto y potencia. from sympy import * from sympy.plotting import plot_parametric import math t = symbols('t') a=1 x = a*sin(t)*cos(t)*log(abs(t)) y = a*(t**2)**(3/20)*sqrt(cos(t)) print ("Corazon 2") plot_parametric(x, y, (t, -a, a)) Cuarta curva corazón. Para la cuarta curva, es prácticamente igual. En este caso, elegimos la fórmula expresada en coordenadas polares, la copiamos como texto plano y la adaptamos a nuestro código Python añadiendo los signos “*”, como en el ejemplo anterior. r(θ) = a ((sin(θ) sqrt(abs(cos(θ))))/(sin(θ) + 7/5) – 2 sin(θ) + 2) from sympy import * from sympy.plotting import plot_parametric import math %matplotlib inline t = symbols('t') a=1 r = a* ((sin(t)* sqrt(abs(cos(t))))/(sin(t) + 7/5) - 2* sin(t) + 2) print ("Corazon 4") plot_parametric( r*cos(t), r*sin(t), (t, 0, 2*pi)) Obtenemos la siguiente gráfica: Quinta curva corazón Terminamos con la quinta curva. Volvemos a recurrir a las ecuaciones paramétricas. Como en los casos anteriores, nos fijamos en el rango de valores que hay que especificar para t: (t, -pi, pi) from sympy import * from sympy.plotting import plot_parametric import math t = symbols('t') x = 16*(sin(t))**3 y = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t) print ("Corazon 5") plot_parametric(x, y, (t, -pi, pi)) Esperamos que estos ejemplos os animen a probar cómo visualizar funciones matemáticas en Python, con todo tipo de fines: recreativos, prácticos, de investigación etc ¿Se atreve alguien con las ecuaciones de la curva de Batman? 😉 (aquí puede encontrar una solución) Si quieres echar un vistazo a los post que hemos publicado en años anteriores por estas fechas: PLN con Python: Tokens, stop words y ngrams¿Por qué nunca tendré novia?Especial San Valentin: ¿Podemos predecir la infidelidad con IA? Predictor de infidelidad (II): ¿Qué es la regresión logística? Predictor de infidelidad (III): Un ejemplo de regresión logística sobre el dataset “Affairs” Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube. Inteligencia Artificial y el origen del UniversoRFID: La solución para digitalizar tu tienda
Paloma Recuero de los Santos Florence Nightingale, pionera en el uso de datos para la salud Florence Nightingale es conocida por sentar las bases de la profesionalización de la enfermería. Sin embargo, mucha gente desconoce que fue su trabajo visionario en el campo de la...
Paloma Recuero de los Santos Iot4All: Los desafíos que debe enfrentar la IoT Internet de las cosas, IoT, está presente en numerosos escenarios y casos de uso. No sólo está en la base de la transformación digital de la industria, y otros...
Paloma Recuero de los Santos Video Post #9: Analíticas Big Data, sí, pero ¿Cuáles? Sabemos que las analíticas avanzadas Big Data son imprescindibles para no perder la comba de la innovación digital. Lo que no tenemos tan claro es qué tipo de...
Fran Ramírez Las matemáticas del Machine Learning: Números aleatorios y dónde encontrarlos (II) En el artículo anterior mencionamos la importancia que tienen en nuestro día a día los números aleatorios, utilizados para realizar cualquier tipo de simulación y fundamentales a la hora...
LUCA Talk: La importancia de la seguridad y aspectos legales en el gobierno de los datos. FORMATO: Charla de 30 minutos + Q&A de 10 minutosCUÁNDO: 3 de marzo, 16:00 h (CET)CÓMO: Inscripción gratuita en eventbrite SOBRE QUÉ: Desde la Comisión Europea se está definiendo y escribiendo...
LUCA La teoría Gestalt en Gobierno del Dato Al igual que un dato por si sólo no vale nada si no se le dota de información, conocimiento y se usa para un propósito, “Gobernar el dato por...