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.

Altair muestra imágenes superpuestas.

Quiero mostrar imágenes superpuestas usando altair.
Aquí tienes un código de demostración.

import altair as alt
import pandas as pd
source = pd.DataFrame([{"x": [0,0,0], "y": [0,0,0], 
                        "img": ["https://vega.github.io/vega-datasets/data/gimp.png",
                               "https://vega.github.io/vega-datasets/data/7zip.png",
                               "https://vega.github.io/vega-datasets/data/ffox.png"]}])
chart = alt.Chart(source).mark_image(width=100,height=100).encode(x='x', y='y', url='img')
chart

Lo que veo como resultado no es lo que esperaba.

enter image description here

Me pregunto cuál es el problema aquí.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que los valores x e y en el DataFrame son listas, pero deberían ser enteros o flotantes. Por lo tanto, el gráfico no puede renderizar correctamente las imágenes. Para solucionar esto, los valores x e y deben cambiarse a valores únicos. Por ejemplo, el siguiente código debería mostrar las imágenes correctamente superpuestas:

    import altair as alt
    import pandas as pd
    
    source = pd.DataFrame([{"x": 0, "y": 0, 
                            "img": "https://vega.github.io/vega-datasets/data/gimp.png"},
                           {"x": 0, "y": 0, 
                            "img": "https://vega.github.io/vega-datasets/data/7zip.png"},
                           {"x": 0, "y": 0, 
                            "img": "https://vega.github.io/vega-datasets/data/ffox.png"}])
    
    chart = alt.Chart(source).mark_image(width=100,height=100).encode(x="x", y="y", url="img")
    chart
    

    Este código crea un DataFrame con valores únicos para x e y, y tres imágenes diferentes. El gráfico resultante debería mostrar las imágenes correctamente superpuestas.

Comments are closed.