es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar imágenes en lugar de puntos en un gráfico de dispersión de Plotly (Python)

Digamos que tengo este gráfico de dispersión en plotly:

import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()

Descripción de la imagen aquí

Pero en lugar de los puntos, quiero agregar diferentes imágenes en esas posiciones particulares. Algo así:

Descripción de la imagen aquí

¿Es eso posible con plotly? Sé que se pueden agregar imágenes, pero no sé cómo pasar las coordenadas exactas de la posición donde deben mostrarse las imágenes.

¡Agradezco su tiempo! Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible agregar imágenes en posiciones específicas en una gráfica de dispersión utilizando Plotly. Puede lograr esto siguiendo estos pasos:

    1. Importe el módulo Imagen de Plotly y el módulo PIL (Python Imaging Library).
    2. Defina las URLs o rutas de archivo de las imágenes que desea utilizar.
    3. Cree una lista de diccionarios que contenga las coordenadas x e y y las URL o rutas de archivo de las imágenes.
    4. Agregue las imágenes a la gráfica de dispersión utilizando el parámetro ‘imagen’ del rastro de dispersión.

    Aquí hay un ejemplo de fragmento de código que muestra cómo agregar imágenes a una gráfica de dispersión:

    import plotly.express as px
    from PIL import Image
    import urllib
    
    # Definir las URLs o rutas de archivo de las imágenes
    image_urls = [
        'https://i.stack.imgur.com/1C0Zl.png',
        'https://i.stack.imgur.com/AQ8yX.png',
        'https://i.stack.imgur.com/evvzY.png',
        'https://i.stack.imgur.com/mX6nM.png',
        'https://i.stack.imgur.com/5Pu7v.png'
    ]
    
    # Cree una lista de diccionarios que contenga las coordenadas x e y y las URL o rutas de archivo de las imágenes
    image_data = []
    for i, url in enumerate(image_urls):
        with urllib.request.urlopen(url) as url:
            img = Image.open(url)
            image_data.append(
                dict(
                    x=[i],
                    y=[i*i],
                    xref='x',
                    yref='y',
                    sizex=0.2,
                    sizey=0.2,
                    sizing='stretch',
                    opacity=0.8,
                    layer='above',
                    source=img
                )
            )
    
    # Cree la gráfica de dispersión
    fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
    fig.update_layout(images=image_data)
    
    # Mostrar la gráfica
    fig.show()
    

    Esto agregará las imágenes especificadas a la gráfica de dispersión en las posiciones determinadas por las coordenadas x e y en la lista image_data. Puede ajustar el tamaño, la opacidad y la capa de las imágenes utilizando los parámetros en el dict dentro de la lista.

Comments are closed.