En el mundo de la programación, la visualización de datos es fundamental. Muchas veces tenemos información que es más fácil de entender si la representamos gráficamente. En esta etapa del aprendizaje, nos enfocaremos en cómo utilizar Bokeh, una de las numerosas librerías que Python ofrece para visualizar datos de manera sencilla y eficaz. ¿Listo para potenciar tus habilidades analíticas? ¡Comencemos!
¿Qué es Bokeh y por qué utilizarlo?
Bokeh se destaca entre las librerías de Python debido a su capacidad para generar gráficos interactivos que podemos exportar a diferente formatos, como HTML, Jupyter Notebooks e imágenes. Esta flexibilidad permite crear visualizaciones dinámicas y atractivas para los usuarios, tanto en aplicaciones web como en interfaces de programación de aplicaciones (API) usando frameworks como Flask y Django.
Además, Bokeh permite trabajar en distintos niveles de complejidad con sus visualizaciones. Desde gráficos sencillos hasta representaciones en tres dimensiones, Bokeh ofrece una vasta variedad de herramientas para personalizar y adaptar los gráficos a nuestras necesidades específicas.
¿Cómo crear una gráfica sencilla con Bokeh?
Para iniciar con Bokeh, veamos cómo crear un gráfico de líneas simple que recogerá valores del usuario:
from bokeh.plotting import figure, output_file, show
# Determina el nombre del archivo de salidaoutput_file("grafica_simple.html")# Crea una figura para el gráficofigura = figure()# Solicita al usuario que ingrese la cantidad de valores a graficarnum_valores =int(input("¿Cuántos valores quieres graficar? "))# Genera las listas de valores X y Y dependientes del usuariox_vals =list(range(num_valores))y_vals =[]for x in x_vals: y =int(input(f"Inserta el valor para Y cuando X es {x}: ")) y_vals.append(y)# Añade la línea a la figura usando los valores X y Yfigura.line(x_vals, y_vals, line_width=2)# Muestra la gráfica en el navegadorshow(figura)
El procedimiento es bastante simple:
Configuración del archivo de salida: Definimos un archivo HTML donde se generará la gráfica.
Creación de la figura: Se establece el 'lienzo' donde se dibujarán los datos.
Entrada de datos: Solicitamos al usuario que ingrese la cantidad de puntos a graficar y sus valores correspondientes.
Dibujo de la línea: Mediante los valores obtenidos, Bokeh dibuja una línea en la figura.
Visualización: El gráfico se renderiza en un archivo HTML mostrado en un navegador web.
¿Qué otras opciones ofrece Bokeh?
Bokeh no se limita únicamente a gráficos de líneas. Ofrece una amplia gama de opciones, que incluyen:
Gráficos de dispersión
Diagramas de caja y bigotes (box plot)
Gráficos de barras y de pie
Gráficos en 3D y de calor
Todos los gráficos en Bokeh son altamente personalizables y compatibles con características interactivas como zoom, desplazamiento y selección, lo que permite descomponer los datos en detalles aún más finos.
¿Cómo mejorar tus habilidades de visualización de datos?
La clave para dominar la visualización de datos yace en la práctica constante y en la exploración de nuevas librerías y métodos. Al utilizar documentos y ejemplos de Bokeh, pronto te familiarizarás con sus funcionalidades y cómo pueden aplicarse en diferentes contextos.
Más allá de Bokeh, considera explorar otras librerías como Matplotlib, Seaborn o Plotly para diversificar tus habilidades y encontrar la herramienta perfecta para cada proyecto.
Entonces, ¿estás listo para crear tus propias gráficas? Incursiona en el mundo visual de los datos, comparte tus avances y resultados, y continúa aprendiendo para transformar tus análisis en poderosas historias visuales. ¡El aprendizaje autónomo y continuo es la clave del éxito!
El número de contagios de COVID-19 reportados en Ecuador.
Gracias
wo
Esta gráfica muestra a los Casos Diarios de Hospitalización por COVID en CDMX y Edo. Méx.
La información la saque de las bases de datos de la Ciudad de México:
Aquí está el código:
from bokeh.plottingimport figure, output_file, show
import csv
def Leer_CSV(ruta): fecha =[] hospitalizados_cdmx =[] intubados_cdmx =[]withopen(ruta, newline='')asFile: reader = csv.reader(File) data =list(reader)for i inrange(len(data)):for j inrange(len(data[i])):if j ==0: fecha.append(data[i][j]) elif j ==1: hospitalizados_cdmx.append(int(data[i][j]))else: intubados_cdmx.append(int(data[i][j]))#print('Fechas: \n', fecha)#print('Hospitalizados: \n', hospitalizados_cdmx)#print('Intubados: \n', intubados_cdmx)Crear_grafico(fecha, hospitalizados_cdmx, intubados_cdmx)def Crear_grafico(fecha, lista1, lista2):output_file('Covid_cdmx.html') fig1 =figure(x_range = fecha, plot_height=800, plot_width =1800, title="Casos de Hospitlalizacion por COVID en CDMX y Edo. Méx.") fig1.vbar(x=fecha, top=lista1, width=0.9) fig1.y_range.start=0 fig1.xaxis.major_label_orientation=1.2show(fig1)if __name__ =="__main__":Leer_CSV('personas-hospitalizadas-covid19.csv')
Y el resultado:
Hola un pregunta, en el método de Crear gráfico Pasas 3 listas Como parámetro fecha lista1 y lista2 pero lista2 no la usas para nada. como creas el gráfico si no tienes los valores de lista2?
gracias.
Tomé la gráfica lineal para plasmar el clima de Medellín el día 20 de Marzo. El resultado fue el siguiente:
Hola, ¿de donde tomaste la información para generar el gráfico?
Me gustaría generar uno para Bogotá.
Muy chévere
Si tienen el error de: from bokeh.plotting import figure, output_file, show
ModuleNotFoundError: No module named 'bokeh'
Asegurense de estar en la ruta correcta:
en mi caso esta es mi ruta:
c:/Users/oscar/Documents/Cursos/pooYalgoritmosConPython/graficado/env/graficado_simple.py
Como se pueden dar cuenta tuve que meter mi archivo "graficado_simple.py" dentro de la carpeta "env", no basto con solo estar dentro de la carpeta graficado. Espero les ayude el tip.
PD: Tambien instale el paquete wheel, sin embargo no se si era necesario
comando: pip install wheel
Como lo menciono el compañero Angel Antonio Gonzalez Garrido.
Me ayudo saber que no estaba solo en este error jjaja.
De todas formas ya tengo una mayor documentación de este error, simplemente lo que traiciona es el interprete de errores de visual studio code, te aparece como "Unable to import 'bokeh.plotting'" o "No module named 'bokeh'" pero si has seguido los pasos del profesor si que compila el programa y a pesar de que este tanto en la carpeta raiz como en la carpeta "env" funciona igual, dejo el listado de pasos que seguí:
Crear carpeta proyecto
Crear ambiente virtual
iniciar ambiente virtual e instalar bokeh (comprobar que se ha instalado "pip list"
bajar ambiente virtual
Crear fichero .py donde lo hace el profe e introducir el código (Aquí ya nos saldrá el error en el from al importar bokeh)
iniciar ambiente virtual y ejecutar el fichero .py para compilar el código
Como ya digo el "error" seguirá en el from pero es problema de interprete de errores de visual studio code.
Hola, tengo el mismo
from bokeh.plottingimport figure, output_file, show
if __name__ =='__main__':output_file('graficado_simple.html') fig =figure() total_vals =int(input('Cuantos valores quieres graficar? ')) x_vals =list(range(total_vals)) y_vals =[]for x inx_vals: val =int(input(f'Valor y para {x}')) y_vals.append(val) fig.line(x_vals, y_vals, line_width =2)show(fig)```
(ambiente) C:\Users\Lenovo\Desktop\Trash\Clases\Escuela_DS\2_POO_Python\graficado\ambiente>C:/Users/Lenovo/AppData/Local/Programs/Python/Python38-32/python.exe c:/Users/Lenovo/Desktop/Trash/Clases/Escuela_DS/2_POO_Python/graficado/ambiente/graficado_simple.py
Traceback (most recent call last):
File "c:/Users/Lenovo/Desktop/Trash/Clases/Escuela_DS/2_POO_Python/graficado/ambiente/graficado_simple.py", line 1, in <module>
from bokeh.plotting import figure, output_file, show
ModuleNotFoundError: No module named 'bokeh'
definitivamente me estanque aqui, intente usar bash, tampoco me deja. creo que deberia haber una explicacion acerca de los comandos y que teminal usa ya que no todos usamos mac o linux.
como solución a mi problema lo encontré en el curso de git y github 2019 impartido por Freddy Vega, y tambien el Curso de Introducción a la Terminal y Línea de Comandos tambien en platzi.
pero todo esta relacionado con el uso de terminal basado en linux dentro de windows como git bash
ahora si con Git bash desde windows
Para los que usen Ubuntu WSL les saldrá un error así:
Cuántos valores quieres graficar:5Valor y para 0:6Valor y para 1:7Valor y para 2:90Valor y para 3:2Valor y para 4:1Start:Este comando no se puede ejecutar debido al error:El sistema no puede
encontrar el archivo especificado.En línea:1Carácter:1+Start "file:///mnt/d/Git_Repositories/POOAlgoritmosPython/graficado/g ...+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(:)[Start-Process],InvalidOperationE xception
+FullyQualifiedErrorId:InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
Eso no quiere decir que no se ejecutó el programa, simplemente que Ubuntu WSL no sabe con que explorador abrir el .hmtl que se creó. Pueden abrir el html de manera manual buscándolo en el directorio donde está su script o configurando de alguna forma que Ubuntu WSL use algún explorador de su Windows 10.
Me paso esto, muchas gracias. Ahora digo como hice.
Efectivamente tenía el archivo graficado_simple.html en la carpeta donde esta nuestro venv. Desde VSCode puse la extensión Live Server y lo ejecuté abriendo el archivo HTML y listo me mostró en el navegador predeterminado de Windows 10 mi gráfico.
Gracias por el dato
El hecho del que profesor tuviera un sistema operativo diferente (Linux) al mio (Windows) hizo muchas mas difícil hacer el ejercicio de esta clase. Pero después de medio día, 5 tutoriales en Youtube y haber leído todos los comentario. Puedo decir que lo logre.
Hola Juan,
Si usas windows 10 te recomiendo descargar el bash de ubuntu, con el puedes correr la linea de comando de linux en windows y usas las mismas instrucciones que el profesor
hola, tengo el mismo problema, como hiciste para resolverlo?
Por favor, un curso de bokeh!!! (con django o flask)
Traté de hacer un histograma con datos del COVID de los últimos 7 días, un tema complejo pero que genera muchos datos para practicar. Aprendí que el "eje y" hace notación científica por defecto y para quitarla se usa el código de la línea 15.
Si tienes el error de "ModuleNotFoundError: No module named ‘bokeh’ ", tranquilo es fácil de lidiar con el. 🕐
En vsCode deberás especificar manualmente la ruta del interprete y no te preocupes es muy fácil.
Para hacerlo, abre la paleta de comandos con ( Ctrl + Shift + P ) y escribe Python: Select Interpreter
Luego de ingresas en Python: Select Interpreter y haces clic en Enter interpreter path...
Ahora haces clic en Find...
Esto te llevará a la carpeta actual de tu proyecto, tranquilo solo sigue esta ruta ".venv / Scripts / python.exe" es muy importante que hagas clic en "python.exe". Listo lo hiciste muy bien, ahora ya puedes seguir aprendiendo 💪
Muuuchaaassss graaaaaciiiiaaaas!!!!
me super sirvió el consejo...estaba buscando como solucionarlo hasta que llegue a ti y lo pude solucionar.
Que desastre la parte final del vídeo. Los comentarios están plagados de dudas sobre la ejecución en la consola, y aún así no hay una respuesta que realmente sirva. Por estas cosas con VSC sigo prefiriendo Notebooks como Colab :/.
En los comentarios del video 20 está la respuesta al inconveniente si estás usando Windows.
Lo importante es garantizar que la instalación del entorno virtual es exitosa utilizando los siguientes comandos:
mkdir graficado/
py -3 -m venv env
env\Scripts\activate.bat
pip insatll bokeh
pip freeze
Este último para validar que paquetes se instalaron y por último en la consola escribir: deactivate
Luego cuando vayas a correr el programa en la terminal usar el siguiente comando:
env\Scripts\activate.bat
Luego ejecutar el programa, muy importante tener en cuenta que se deben registrar los valores de y para x, una vez registrados y presionando Enter se abrirá en el navegador el gráfico.
Ejemplo
PS D:\Cursos\Platzi\Progrmación orientada a Objetos y algoritmos en Python\graficado> env\Scripts\activate.bat
PS D:\Cursos\Platzi\Progrmación orientada a Objetos y algoritmos en Python\graficado> py .\graficado_simple.py
Cuantos valores quieres graficar?5
Valor y para 0: 1
Valor y para 1: 2
Valor y para 2: 3
Valor y para 3: 4
Valor y para 4: 5
@jqrguitarr el problema es que mi VSC no tenía activado el uso de scripts. Tuve que seguir un tutorial de estudiantes en el curso de Python Básico para hacerlo. Después de eso ya pude :D.
Para poder Graficar en Windows 10 con el Visual studio Code, deben hacerlo asi:
CTRL+SHIFT+P
Python: Select Interpreter
buscan la carpeta donde esté el env de Python
Gracias a este comentario logré hacer el ejercicio. Muchas gracias.
No es fácil darse cuenta pero es así @anarcila como me funciono. Lo mejor que puede explicar es así: Ingrese la ruta de mi carpeta, donde hice el entorno virtual en VSC (CTRL + SHIFT + P), luego aparece una ventana de windows (como cuando quieren guardar un archivo) pero deben seleccionar la carpeta de entrono virtual (env, o venv, o como la hayan llamado), luego les aparece la carpeta Scripts, la seleccionan y por último buscan python.exe y lo seleccionan. Ahí ya van a poder dar aceptar y les deja ejecutar el código. Espero les ayude, gracias otra vez a @anarcila
from bokeh.ioimport output_file, show
from bokeh.modelsimportColumnDataSourcefrom bokeh.palettesimportSpectral6from bokeh.plottingimport figure
if __name__ =='__main__':output_file('codiv_bar.html') zonas =['Bogotá D.C.','Antioquia','Santander','Cundinamarca','Magdalena','Nariño'] infectados =[1883,426,37,182,141,62] source =ColumnDataSource(data=dict(zonas=zonas, infectados=infectados, color=Spectral6)) fig =figure(x_range=zonas, y_range=(100,2500), plot_height=350, title='Infectados Covid Colombia', toolbar_location=None, tools="") fig.vbar(x='zonas', top='infectados', width=0.9, color='color', legend_field='zonas', source=source) fig.xgrid.grid_line_color=None fig.legend.orientation="horizontal" fig.legend.location="top_center"show(fig)
Una regla general de las ciencias computacionales es que no porque se pueda realizar algo significa que esa sea la mejor forma de hacerlo. En el caso de las graficas uno debe de elegir la grafica que sea más adecuada según sea el propósito.
¡Hola! me aparece el siguiente error en el VS Code al importar la librería de bokeh "Unable to import 'bokeh.plotting'" aunque igual me deja ejecutar el script sin problema alguno. ¿Alguien sabe por qué?
Hola, me pasaba lo mismo, y creo que es porque hemos instalado bokeh en un ambiente virtual, entonces para el archivo de VS Code es como si no existiera.
Una vez activado el ambiente virtual ya detecta bokeh y lo ejecuta sin problemas.
Aquí está la documentación de cómo ocupar ambientes virtuales en VSCode
¿Fui el único en sentirse emocionado al ver el gráfico? XD
Solo pude pensar, un pequeño paso en python, un gran paso hacia el Data Science...
La librería Bokeh permite construir gráficas complejas de manera rápida y con comandos simples, también nos permite exportar a varios formatos como html, notebooks, imágenes, etc. Bokeh se puede utilizar en el servidor con Flask y Django.
from bokeh.plotting import figure, output_file, show
if __name__ =='__main__': output_file('graficado_simple.html') fig = figure() total_vals =int(input('Cuantos valores quieres graficar?')) x_vals =list(range(total_vals)) y_vals =[]for x in x_vals: val =int(input(f'Valor y para {x}')) y_vals.append(val) fig.line(x_vals, y_vals, line_width=2) show(fig)