Visualización interactiva de datos usando Bokeh

Bokeh es una biblioteca de Python para crear visualizaciones de datos interactivas en un navegador web. Ofrece una presentación de datos legible por humanos y rápida de una manera visualmente agradable. Si ha trabajado con visualización en Python anteriormente, es probable que haya usado matplotlib. Pero Bokeh difiere de matplotlib.

Para instalar Bokeh, escriba el siguiente comando en la terminal.

pip install bokeh

¿Por qué deberías usar Bokeh?

Los usos previstos de matplotlib y Bokeh son bastante diferentes. Matplotlib crea gráficos estáticos que son útiles para visualizaciones rápidas y sencillas, o para crear imágenes con calidad de publicación. Bokeh crea visualizaciones para mostrar en la web (ya sea localmente o incrustadas en una página web) y, lo que es más importante, las visualizaciones están destinadas a ser altamente interactivas. Matplotlib no ofrece ninguna de estas características.

Si desea interactuar visualmente con sus datos o desea distribuir datos visuales interactivos a una audiencia web, ¡Bokeh es la biblioteca para usted! Si su principal interés es producir visualizaciones finalizadas para su publicación, matplotlib puede ser mejor, aunque Bokeh ofrece una forma de crear gráficos estáticos.

Trazar un gráfico simple

Para este ejemplo, utilizaremos uno de los conjuntos de datos incorporados, es decir, el conjunto de datos de flores. podemos usar el método circle() para trazar cada punto de datos como un círculo en el gráfico, también podemos especificar atributos personalizados como:

  • los primeros dos elementos deben ser datos en el eje x y el eje y respectivamente.
  • color: para asignar color dinámicamente como se muestra.
  • fill_alpha: para asignar opacidad a los círculos.
  • tamaño: para asignar el tamaño de cada círculo.

Ejemplo:

Python

from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.iris import flowers 
 
# assign custom colors to represent each
# class of data in a dictionary format
colormap = {'setosa': 'red', 'versicolor': 'green',
            'virginica': 'blue'}
 
colors = [colormap[x] for x in flowers['species']]
 
# title for the graph
p = figure(title="Iris Morphology") 
 
# label on x-axis
p.xaxis.axis_label = 'Petal Length'
 
# label on y-axis
p.yaxis.axis_label = 'Petal Width' 
 
# plot each datapoint as a circle
# with custom attributes.
p.circle(flowers["petal_length"],
         flowers["petal_width"],
         color=colors,
         fill_alpha=0.3,
         size=15)
 
# you can save the output as an
# interactive html file
output_file("iris1.html", title="iris.py example")
 
# display the generated plot of graph
show(p)

Producción:

En el ejemplo anterior, la función output_file() se usa para guardar la salida generada como un archivo html, ya que bokeh usa el formato web para proporcionar una visualización interactiva. Finalmente, la función show() se usa para mostrar la salida generada.

Nota: 

  • Color rojo = Setosa, Verde = Versicolor, Azul = Virginica
  • En la parte superior derecha de cada visualización, hay funciones interactivas proporcionadas por bokeh. permite 1. Desplazarse por la parcela, 2. Hacer zoom usando la selección de cuadro, 3. Hacer zoom usando la rueda de desplazamiento, 4. Guardar, 5. Restablecer, 6. Ayuda 

Trazar un gráfico de barras

Para este ejemplo, usaremos un conjunto de datos creado a medida usando la lista en el código mismo, es decir, un conjunto de datos de frutas. La función output_file() se usa para guardar la salida generada como un archivo html, ya que bokeh usa el formato web. podemos usar la función ColumnDataSource() para mapear el conjunto de datos personalizados (dos listas) creados entre sí como un formato de diccionario.  La función figure() se usa para inicializar la figura del gráfico para que los datos se puedan trazar en ella con varios parámetros, tales como:

  • x_range : define datos en el eje x.
  • plot_width, plot_height : define el ancho y la altura del gráfico.
  • toolbar_location : define la ubicación de la barra de herramientas.
  • title : define el título del gráfico.

Aquí estamos usando barras verticales simples para representar datos, por lo tanto, usamos el método vbar() y para asignar varios atributos a las barras verticales, pasamos diferentes parámetros dentro de ellas, como:

  • x : datos en la dirección del eje x
  • arriba : datos en la dirección del eje y
  • ancho : define el ancho de cada barra
  • fuente : fuente de datos
  • legend_field : muestra la lista de clases presentes en los datos
  • line_color : define el color de las líneas en el gráfico
  • fill_color : define diferentes colores para las clases de datos

Hay muchos más parámetros que se pueden pasar aquí. Algunas otras propiedades que se pueden utilizar son:

  • y_range.start : se utiliza para definir el límite inferior de datos en el eje y.
  • y_range.end : se utiliza para definir el límite superior de datos en el eje y.
  • legend.orientation : define la orientación de la barra de leyenda.
  • legend.location : define la ubicación de la barra de leyenda.

Finalmente , la función show() se usa para mostrar la salida generada.

Ejemplo:

Python

from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral10
from bokeh.plotting import figure
from bokeh.transform import factor_cmap
 
 
output_file("fruits_bar_chart.html") #output save file name
 
# creating custom data
fruits = ['Apples', 'Pears', 'Nectarines',
          'Plums', 'Grapes', 'Strawberries',
          'bananas','berries','pineapples','litchi']
counts = [51, 34, 4, 28, 119, 79, 15, 68, 26, 88]
 
# mapping counts with classes as a dictionary
source = ColumnDataSource(data=dict(fruits=fruits,
                                    counts=counts))
 
# initializing the figure
p = figure(x_range=fruits,
           plot_width=800,
           plot_height=350,
           toolbar_location=None,
           title="Fruit Counts")
 
# assigning various attributes to plot
p.vbar(x='fruits', top='counts',
       width=1, source=source,
       legend_field="fruits",
       line_color='white',
       fill_color=factor_cmap('fruits',
                              palette=Spectral10,
                              factors=fruits))
 
p.xgrid.grid_line_color = None
p.y_range.start = 0
p.y_range.end = 150
p.legend.orientation = "horizontal"
p.legend.location = "top_center"
 
# display output
show(p)

Producción:

Nota: este es un gráfico estático que también proporciona bokeh similar a matplotlib.

Publicación traducida automáticamente

Artículo escrito por kevadiyasmeet y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *