Bokeh - Mises en page

Les visualisations Bokeh peuvent être organisées de manière appropriée dans différentes options de mise en page. Ces mises en page ainsi que les modes de dimensionnement entraînent un redimensionnement automatique des tracés et des widgets en fonction de la taille de la fenêtre du navigateur. Pour une apparence cohérente, tous les éléments d'une mise en page doivent avoir le même mode de dimensionnement. Les widgets (boutons, menus, etc.) sont conservés dans une boîte de widget séparée et non dans la figure de tracé.

Le premier type de disposition est la disposition en colonnes qui affiche les figures de tracé verticalement. lecolumn() function est défini dans bokeh.layouts module et prend la signature suivante -

from bokeh.layouts import column
col = column(children, sizing_mode)

children - Liste des parcelles et / ou widgets.

sizing_mode- détermine comment les éléments de la mise en page sont redimensionnés. Les valeurs possibles sont "fixed", "stretch_both", "scale_width", "scale_height", "scale_both". La valeur par défaut est «fixe».

Le code suivant produit deux chiffres Bokeh et les place dans une disposition de colonne afin qu'ils soient affichés verticalement. Les glyphes de ligne représentant la relation sinus et cos entre les séries de données x et y sont affichés dans Chaque figure.

from bokeh.plotting import figure, output_file, show
from bokeh.layouts import column
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y1 = np.sin(x)
y2 = np.cos(x)
fig1 = figure(plot_width = 200, plot_height = 200)
fig1.line(x, y1,line_width = 2, line_color = 'blue')
fig2 = figure(plot_width = 200, plot_height = 200)
fig2.line(x, y2,line_width = 2, line_color = 'red')
c = column(children = [fig1, fig2], sizing_mode = 'stretch_both')
show(c)

Production

De même, la disposition des lignes organise les tracés horizontalement, pour lesquels row() functiontel que défini dans le module bokeh.layouts est utilisé. Comme vous le pensez, il faut également deux arguments (similaires àcolumn() function) - enfants et sizing_mode.

Les courbes sinus et cos comme indiqué verticalement dans le diagramme ci-dessus sont maintenant affichées horizontalement dans la disposition des lignes avec le code suivant

from bokeh.plotting import figure, output_file, show
from bokeh.layouts import row
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y1 = np.sin(x)
y2 = np.cos(x)
fig1 = figure(plot_width = 200, plot_height = 200)
fig1.line(x, y1,line_width = 2, line_color = 'blue')
fig2 = figure(plot_width = 200, plot_height = 200)
fig2.line(x, y2,line_width = 2, line_color = 'red')
r = row(children = [fig1, fig2], sizing_mode = 'stretch_both')
show(r)

Production

Le package Bokeh a également une disposition en grille. Il contient plusieurs figures de tracé (ainsi que des widgets) dans une grille à deux dimensions de lignes et de colonnes. legridplot() function dans le module bokeh.layouts renvoie une grille et une seule barre d'outils unifiée qui peuvent être positionnées à l'aide de la propriété toolbar_location.

Ceci est différent de la disposition en ligne ou en colonne où chaque tracé affiche sa propre barre d'outils. La fonction grid () utilise également les paramètres children et sizing_mode où children est une liste de listes. Assurez-vous que chaque sous-liste a les mêmes dimensions.

Dans le code suivant, quatre relations différentes entre les séries de données x et y sont tracées dans une grille de deux lignes et deux colonnes.

from bokeh.plotting import figure, output_file, show
from bokeh.layouts import gridplot
import math
x = list(range(1,11))

y1 = x
y2 =[11-i for i in x]
y3 = [i*i for i in x]
y4 = [math.log10(i) for i in x]

fig1 = figure(plot_width = 200, plot_height = 200)
fig1.line(x, y1,line_width = 2, line_color = 'blue')
fig2 = figure(plot_width = 200, plot_height = 200)
fig2.circle(x, y2,size = 10, color = 'green')
fig3 = figure(plot_width = 200, plot_height = 200)
fig3.circle(x,y3, size = 10, color = 'grey')
fig4 = figure(plot_width = 200, plot_height = 200, y_axis_type = 'log')
fig4.line(x,y4, line_width = 2, line_color = 'red')
grid = gridplot(children = [[fig1, fig2], [fig3,fig4]], sizing_mode = 'stretch_both')
show(grid)

Production