Crear una leyenda de dos líneas en un gráfico Bokeh

En este artículo, aprenderemos cómo crear una leyenda de dos líneas en el diagrama de bokeh. Las leyendas son una de las partes más esenciales de una trama de bokeh. Nos ayudan a diferenciar entre los diferentes glifos utilizados en una trama. Aparte de eso, si necesitamos trazar diferentes líneas de diferentes colores en el mismo gráfico, podemos diferenciarlas usando la leyenda. Además, podemos cambiar varias propiedades de las cosas mencionadas en la leyenda.

Pero antes de profundizar en el tema, deberíamos tener Google Colab o usar un editor de código de dispositivo local. Si estamos trabajando en google colab, podemos ir directamente a la siguiente implementación. Pero si estamos utilizando un dispositivo local, debemos asegurarnos de que tenemos el bokeh preinstalado en nuestro dispositivo, de lo contrario, también podemos instalarlo. Abra un símbolo del sistema y escriba

pip install bokeh

Ahora, todo está listo. La instalación es imprescindible en nuestro dispositivo local sino no funcionarán las funcionalidades. Pasemos a la implementación anterior.

Ejemplo 1:

En el primer ejemplo, estamos viendo algunas líneas que se trazan utilizando una amplia gama de puntos en un lienzo vacío. Usando leyenda en bokeh estamos diferenciando las líneas. Lo principal a notar aquí es que tenemos una leyenda de dos líneas. Entonces, sin más espera, vayamos al código y veamos cómo funciona.

Código:

Python3

# importing show from
# bokeh.io to show the plot
from bokeh.io import show
 
# importing legend from bokeh.models
from bokeh.models import Legend
 
# importing figure from bokeh.plotting
from bokeh.plotting import figure
 
# importing numpy package from python
import numpy as np
 
# Creating an empty figure of plot height=600
# and plot width=600
fig = figure(plot_height=600, plot_width=600)
 
# Creating point1 which is a yellow color line with
# line width as 3 for a set of points
point1 = fig.line(x=[0, 1.43, 2.76, 3.24, 4.45, 5.65,
                     6.98, 7, 8, 9.76, 10.67, 11.54, 12.567,
                     13.21, 14.65, 15, 16.45, 17, 18.32, 19.57, 20],
                  y=np.linspace(0, 2, 21),
                  line_width=3, color="yellow")
 
# Creating point2 which is a purple color line with
# line width as 2 for a set of points
point2 = fig.line(x=np.linspace(0, 20, 20), y=np.linspace(0, 3, 20),
                  line_width=2, color="purple")
 
# Creating point3 which is a pink color line with
# line width as 4 for a set of points
point3 = fig.line(x=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                     12, 13, 14, 15, 16, 17, 18, 19, 20],
                  y=[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2.5, 2.34,
                     2.48, 2.67, 2.12, 2.01, 1.67, 1.98, 1.07, 1],
                  line_width=4, color="pink")
 
# Creating point4 which is a green color line with
# line width as 2 for a set of points
point4 = fig.line(x=[0, 20], y=5,
                  line_width=2,
                  color="green")
 
# Using legend we are placing two point descriptions
# beside each other horizontally
legend1 = Legend(items=[("point1", [point1]),
                        ("point2", [point2])],
                 location=(7, 2), orientation="horizontal")
 
# Using legend we are placing th other two point
# descriptions beside each other horizontally
legend2 = Legend(items=[("point3", [point3]),
                        ("point4", [point4])],
                 location=(7, 2), orientation="horizontal")
 
# placing legend1 at the top
fig.add_layout(legend1, 'above')
 
# placing legend2 at the top
fig.add_layout(legend2, 'above')
 
# showing the figure
show(fig)

Producción:

Explicación:

  • En el ejemplo anterior, estamos importando todos los paquetes necesarios al principio, como show, figure, Legend y numpy de diferentes módulos de la biblioteca bokeh que nos proporciona Python.
  • Después de importar los paquetes, estamos creando una figura vacía de ancho y alto de parcela como 600.
  • Después de eso, estamos creando cuatro líneas diferentes con un conjunto diferente de puntos junto con diferentes colores de línea y ancho de línea. Para identificarlos se utiliza una leyenda.
  • Ahora, para crear una leyenda de dos líneas , estamos usando dos variables legend1 y legend2 donde almacenamos dos puntos en cada una de las variables donde proporcionamos la orientación como horizontal. Como resultado, se mostrarán dos en cada fila.
  • Usando ‘ add_layout ‘ estamos determinando la posición de la leyenda como arriba, es decir, se mostrará en la parte superior de la representación gráfica.
  • Finalmente, mostramos la trama usando un programa de bokeh.io.

Ejemplo 2:

En el siguiente ejemplo, exploraremos el concepto con algunos glifos proporcionados por bokeh. Bokeh nos proporciona varios tipos de glifos, por lo que implementaremos el mismo concepto utilizado en el ejemplo anterior.

Código:

Python3

# importing show from
# bokeh.io to show the plot
from bokeh.io import show
 
# importing legend from bokeh.models
from bokeh.models import Legend
 
# importing figure from bokeh.plotting
from bokeh.plotting import figure
 
# importing numpy package from python
import numpy as np
 
x1 = [7, 8, 4, 3, 2, 9, 10, 11, 6, 6, 3]
y1 = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
 
# Creating an empty figure of plot height=600
# and plot width=600
fig = figure(plot_height=600, plot_width=600)
 
# Creating point1 in the form of circular glyphs
# with a set of points
point1 = fig.circle(x=np.arange(14),
                    y=[14, 13, 12, 11, 10, 9, 8, 7,
                       6, 5, 4, 3, 2, 1])
 
# Creating point2 in the form of triangular glyphs
# with a set of points
point2 = fig.triangle(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                         12, 13, 14],
                       
                      y=[1, 4, 9, 16, 25, 36, 49, 64, 81, 100,
                         121, 144, 169, 196], size=30,
                       
                      color="green", alpha=0.5)
 
# Creating point3 in the form of diamond shaped glyphs
# with a set of points
point3 = fig.diamond(x=[1, 2, 4],
                     y=[20, 19, 1],
                     color="red",
                     alpha=0.4)
 
# Creating point4 in the form of square shaped glyphs
# with a set of points
point4 = fig.square(x=[70, 80, 40, 30, 20, 10],
                    y=[10, 20, 40, 50, 60, 70],
                    color="red", size=20,
                    alpha=0.6)
 
# Creating point5 in the form of inverted triangular glyphs
# with a set of points
point5 = fig.inverted_triangle(x=[75, 85, 45, 35, 25, 15],
                               y=[15, 25, 45, 55, 65, 75],
                               color="purple", size=10, alpha=0.6)
 
# Creating point6 in the form of square shaped glyphs
# with a set of points
point6 = fig.square(x1, y1, color="yellow",
                    size=20, alpha=0.6)
 
# Using legend we are placing two point descriptions
# beside each other
# horizontally
legend1 = Legend(items=[("point1", [point1]),
                        ("point2", [point2])],
                 location=(10, 10), orientation="horizontal")
 
# Using legend we are placing th other two point
# descriptions beside each other horizontally
legend2 = Legend(items=[("point3", [point3]), ("point4", [point4])],
                 location=(10, 10), orientation="horizontal")
 
# Using legend we are placing th other two point
# descriptions beside each other horizontally
legend3 = Legend(items=[("point5", [point5]), ("point6", [point6])],
                 location=(10, 10), orientation="horizontal")
 
# placing legend1 at the bottom
fig.add_layout(legend1, 'below')
 
# placing legend2 at the bottom
fig.add_layout(legend2, 'below')
 
# placing legend3 at the bottom
fig.add_layout(legend3, 'below')
 
# showing the figure
show(fig)

Producción:

Explicación:

  • Después de importar los paquetes requeridos, tomamos dos variables x1 e y1 con un conjunto de puntos que se trazarán más adelante.
  • Después de eso, estableceremos el ancho y la altura de la trama en 600. Ahora, el bokeh nos brinda una variedad de glifos que se pueden usar para diferenciar diferentes tramas en un gráfico. Entonces, tomamos algunos de los glifos para señalar 6 gráficos de este tipo en nuestra gráfica con una amplia gama de puntos.
  • Después de señalarlos, usamos la leyenda para identificar cada uno de los glifos y mantuvimos dos puntos uno al lado del otro junto con su orientación como ‘ horizontal ‘.
  • Ahora usando la opción ‘ add_layout ‘, podemos determinar la posición del cuadro de leyenda. En este caso, lo estamos colocando en la parte inferior.
  • Finalmente, estamos mostrando la figura con la ayuda de ‘ show ‘ de ‘ bokeh.io ‘.

Publicación traducida automáticamente

Artículo escrito por deepanshu_rustagi 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 *