En este artículo vamos a ver cómo trabajar con imágenes en Bokeh.
Para esto, usaremos el glifo ImageURL . Este glifo representa imágenes que se cargan desde las URL dadas.
Sintaxis: ImageURL(‘url’, ‘x’, ‘y’, ‘w’, ‘h’, ‘ángulo’, ‘dilatar’)
Argumentos:
- url: La url desde donde se deben recuperar las imágenes.
- x = NumberSpec(predeterminado=campo(“x”), las coordenadas x para ubicar los anclajes de la imagen.
- y = NumberSpec(predeterminado=campo(“y”), las coordenadas y para ubicar los anclajes de la imagen.
- w = NullDistanceSpec, el ancho de la región de trazado que ocupará la imagen en el espacio de datos. El valor predeterminado es «Ninguno», en cuyo caso la imagen se mostrará en su tamaño de imagen real.
- h = NullDistanceSpec, la altura de la región de trazado que ocupará la imagen en el espacio de datos. El valor predeterminado es «Ninguno», en cuyo caso la imagen se mostrará en su tamaño de imagen real (independientemente de las unidades especificadas aquí).
- angle = AngleSpec(predeterminado=0), los ángulos con los que se rotarán las imágenes, medidos desde la horizontal.
- global_alpha = Float(1.0), una opacidad general con la que se representa cada imagen.
- dilate = Bool(False), Indica si se redondean siempre las ubicaciones de píxeles fraccionarios de manera que las imágenes sean más grandes. Esta configuración puede ser útil si los errores de redondeo de píxeles hacen que las imágenes tengan un espacio entre ellas, cuando deberían aparecer al ras.
- ancla = Enum(Ancla), Qué posición de la imagen debe anclarse en las coordenadas `x`, `y`.
- retry_attempts = Int(0), número de intentos de volver a intentar cargar las imágenes desde la URL especificada. El valor predeterminado es cero.
- retry_timeout = Int(0), tiempo de espera (en ms) entre reintentos para cargar la imagen desde la URL especificada. El valor predeterminado es cero ms.
Ejemplo 1: Importación de imagen desde URL
En este ejemplo, cargamos la imagen desde la URL proporcionada y luego representamos la imagen en el gráfico. En este ejemplo, estamos cargando la imagen desde la web, que también se puede cargar localmente. Aquí, mostramos dos imágenes en el gráfico con diferentes valores de parámetros (como x, y, w, h, etc.). Puede observar la salida para comprender mejor.
Python
# importing numpy package and other libraries import numpy as np from bokeh.io import curdoc, show from bokeh.models import ColumnDataSource, Grid, ImageURL, LinearAxis, Plot, Range1d from bokeh.plotting import figure # url to load image from url = "https://media.geeksforgeeks.org/wp-content/\ uploads/20210829161730/logo.png" N = 5 # creating columndatasource source = ColumnDataSource(dict( url=[url]*N, x1=np.arange(N), y1=np.arange(N), w1=[35]*N, h1=[64]*N, )) # creating x and y axis range xdr = Range1d(start=-100, end=300) ydr = Range1d(start=-100, end=300) # creating a plot with above x and y axes range plot = Plot( title=None, x_range=xdr, y_range=ydr, plot_width=400, plot_height=400, min_border=0, toolbar_location=None) # loading the image using imageUrl image = ImageURL(url=["https://media.geeksforgeeks.org/\ wp-content/uploads/20210829161730/logo.png"], x=50, y=80, w=200, h=250, anchor="bottom_left") image1 = ImageURL(url="url", x="x1", y="y1", w="w1", h="h1", anchor="center") # rendering the images to the plot plot.add_glyph(source, image) plot.add_glyph(source, image1) xaxis = LinearAxis() plot.add_layout(xaxis, 'below') yaxis = LinearAxis() plot.add_layout(yaxis, 'left') # adding grid lines to the plot plot.add_layout(Grid(dimension=0, ticker=xaxis.ticker, grid_line_color='#00ff00')) plot.add_layout(Grid(dimension=1, ticker=yaxis.ticker, grid_line_color='#00ff00')) # creates output file curdoc().add_root(plot) curdoc().theme = 'caliber' # showing the plot on output file show(plot)
Producción:
Explicación:
- Estamos creando ColumnDataSource que proporciona datos a los glifos de nuestra trama. Bokeh tiene su propia estructura de datos llamada ColumnDataSource que se puede usar como entrada para cualquier objeto de Bokeh. Estamos creando los datos con arrays NumPy.
- Ahora cree el rango x e y usando range1d que crea un rango en una dimensión escalar y luego asígnelo a xdr e ydr que usaremos mientras creamos la gráfica.
- Luego creamos el gráfico con xdr e ydr como x_range e y_range y configuramos la altura y el ancho del gráfico como 400.
- Luego estamos recuperando la imagen de la URL que declaramos antes al establecer los valores de todos los parámetros como se muestra en el código. Estamos usando dos imágenes aquí dando diferentes valores.
- Ahora, renderizamos las imágenes a la trama.
- A continuación, agregamos las líneas de la cuadrícula al gráfico usando la función Cuadrícula y le damos el color ‘verde’.
- Luego, agregamos la trama al código de la aplicación curdoc que representa un nuevo documento y se envía a bokehJs para mostrárselo al usuario.
Ejemplo 2: Creación de un glifo circular
En este ejemplo, estamos creando una figura con un glifo circular y luego simplemente representando la imagen desde la URL dada usando el glifo ImageURL.
Python
# importing numpy package and other libraries import numpy as np from bokeh.io import curdoc, show from bokeh.models import ColumnDataSource, Grid, ImageURL, LinearAxis, Plot, Range1d from bokeh.plotting import figure # create dict as basis for ColumnDataSource data = {'x1': [10, 20, 30, 40, 50], 'y1': [60, 70, 80, 90, 100]} # create ColumnDataSource based on dict source = ColumnDataSource(data=data) # creating figure p = figure(plot_height=500, plot_width=500) p.circle(x="x1", y="y1", size=20, source=source) # rendering the image using imageUrl image = ImageURL(url=["https://media.geeksforgeeks.org/\ wp-content/uploads/20210902155548/imgurl2-200x112.jpg"], x=80, y=100, w=50, h=40, anchor="center", retry_attempts=2) # adding the images to the plot p.add_glyph(source, image) # creates output file curdoc().add_root(p) # showing the plot on output file show(p)
Producción:
Publicación traducida automáticamente
Artículo escrito por namaldesign y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA