Saltar al contenido

Construyendo gráficos en Bokeh

Debido a la personalización de Bokeh, es compatible con las bibliotecas de estructura de datos en Python como Numpy y Pandas. Bokeh también tiene su propia estructura de datos,s estructuras de columnas , por lo que veremos cómo implementar Numpy, Pandas y estructuras de columnas en Bokeh.

Parcela 7: Parcela simple con la ayuda de Numpy

123456789101112de bokeh.plotting import figure, output_file, show# importar biblioteca numpyimportar numpy como np# crear datos aleatorios usando numpyx = np. linspace(0,15,800)y = np.cos(x)+ np.random.random(800)*0.20p = figure()# render glyphp.line(x, y,color=$0027Blue$0027)output_file($0027Numplyplot.html$0027)# show resultshow(p)

pitón

Construyendo gráficos en Bokeh
Construyendo gráficos en Bokeh

También podemos mostrar una cuadrícula de gráficos usando la función gridplot() de Bokeh. Este tipo de gráficos son útiles cuando tenemos que mostrar el cambio en un parámetro basado en los otros parámetros. Veremos esto ilustrado en el siguiente ejemplo.

Parcela 8: Múltiples parcelas en una sola cuadrícula con la ayuda de Numpy

1234567891011121314151617181920212223242526272829importar numpy como npfrom bokeh.plotting importar figura, archivo_salida, mostrar# importar función de cuadrícula desde bokeh.layouts importar cuadrícula# preparar algunos datos usando numpyx = np. linspace(0,15,80)y = np.cos(x)y1 = np.sin(x)y2 = np.sin(x)+ np.cos(x)# outputfileoutput_file("grid.html")# crear una nueva plota1 = figure(width=250, plot_height=250, title=None)a1.circle(x, y, size=10, color="yellow", alpha=0. 5)# nueva parcela con el mismo rangoa2 = figura(width=250, height=250, x_range=a1.x_range, y_range=a1.y_range, title=None)a2.triangle(x, y1, size=10, color="Grey", alpha=0.5)# nueva parcela con el eje x mismo rangoa3 = figura(width=250, height=250, x_range=a1. x_rango, título=Ninguno)a3.cuadrado(x, y2, tamaño=10, color="verde", alpha=0.5)# NUEVO: poner las subtramas en una cuadrículap = cuadrícula([[a1, a2, a3]], barra de herramientas_localización=Ninguno)# mostrar resultadoshow(p)

pitón

Gráfica 9: Gráfica con la ayuda de los pandas

Usaremos un marco de datos de muestra. He importado el conjunto de datos del lirio de las flores de la biblioteca Bokeh.

1234# Flowers es un Pandas DataFramefrom bokeh.sampledata.iris importar flores# ver dataset print(flowers)

pitón

salida-:

1234567891011121314 sepal_longitud sepal_anchura pétalo_longitud pétalo_anchura especie0 5.1 3.5 1.4 0.2 setosa1 4.9 3.0 1.4 0.2 setosa2 4.7 3.2 1.3 0.2 setosa3 4.6 3.1 1.5 0.2 setosa4 5.0 3.6 1.4 0.2 setosa5 5. 4 3,9 1,7 0,4 setosa6 4,6 3,4 1,4 0,3 setosa7 5,0 3,4 1,5 0,2 setosa8 4,4 2,9 1,4 0,2 setosa9 4,9 3,1 1,5 0,1 setosa10 5,4 3,7 1,5 0,2 setosa11 4,8 3,4 1,6 0,2 setosa12 4,8 3,0 1,4 0,1 setosa

salida

Después de la importación, trazaremos el marco de datos usando Pandas y Bokeh.

123456789101112de bokeh.plotting importar figura, output_file, show# plot con el eje x como longitud del pétalo y el eje y como longitud del sépalop = figure(x_axis_label=$0027longitud del pétalo$0027,y_axis_label=$0027longitud del sépalo$0027,)# render glyph p. circle(flowers[$0027petal_length$0027],flowers[$0027sepal_length$0027],size=10)# output fileoutput_file($0027flowers.html$0027)# show resultshow(p)

pitón

Diagrama 10: Mapeo de color del marco de datos de las flores con la ayuda de los pandas

12345678910111213141516171819202122232425262728293031# mapeo de color para un espacio o un rango de bokeh.models import CategoricalColorMapperfrom bokeh.plotting import figure, output_file, show#class to import a object to store the data of bokeh graph.from bokeh.models import ColumnDataSource#imprinting a dataframefrom bokeh.sampledata. iris importan las flores como dfdataframe= ColumnDataSource(df)#mapear el color con el flowersmapper = CategoricalColorMapper(factores=[$0027setosa$0027,$0027virginica$0027,$0027versicolor$0027],palette=[$0027pink$0027,$0027grey$0027,$0027olive$0027])# añadir la gráfica = figure(x_axis_label=$0027longitud del pétalo$0027,y_axis_label=$0027longitud del sepal$0027)#realizar la gráfica. circle($0027petal_length$0027,$0027sepal_length$0027, size=10, source=dataframe, color ={$0027field$0027:$0027species$0027,$0027transform$0027: mapper #mapper mapea el factor categórico a otros valores.})output_file($0027colormapping.html$0027)#show resultshow(plot)

pitón

En este programa, ColumnDataSource es necesario porque ColumnDataSource es el objeto donde se almacenan los datos del gráfico de Bokeh. Puede elegir no usar ColumnDataSource y alimentar su gráfico directamente con diccionarios Python, marcos de datos Pandas, etc. Pero para ciertas características, como tener una ventana emergente que muestre información de datos cuando el usuario pasa el ratón sobre los glifos, se le obliga a usar ColumnDataSource o la ventana emergente no podrá obtener los datos.