2 votes

Le logo de Python plotly disparaît du graphique

Je dois créer un rapport simple qui présente un tableau de données et deux logos dans les coins supérieurs. Le code ci-dessous a fonctionné dans un projet précédent mais maintenant que je le réutilise sur un nouvel ordinateur pour un nouveau projet, il n'affiche pas les logos.

Je n'obtiens aucun message d'erreur. Même version de plotly et de python "plotly==4.6.0" "Python 3.6.1"

Notez que la seule chose qui a changé, ce sont les données affichées dans le tableau de données.

import plotly.graph_objects as go
import pandas as pd

traces = go.Table(
    header=dict(values=list(df.columns),
            align='left'),
    cells=dict(
        values=df.T.values.tolist(),
        align='left'))

layout = go.Layout(
                title='Report <br>  {}'.format( report_date),
                title_x=0.5,
                paper_bgcolor='#FFFFFF',
                margin = {'t':100, 'b':40, 'r':40, 'l':40}
                ,images=[
                    dict(
                        source='assets\\MiniLogo.png',
                        xref='paper',yref='paper',
                        x=1,y=1.05,
                        sizex=0.2, sizey=0.2,
                        xanchor="right", yanchor="bottom"), 
                    dict(
                        source='assets\\Titlelogo.png',
                        xref='paper',yref='paper',
                        x=0,y=1.05,
                        sizex=0.2, sizey=0.2,
                        xanchor="left", yanchor="bottom")

                    ]

                )
fig = go.Figure(
        data=traces
        ,layout=layout)
fig.show()

3voto

Anwarvic Points 993

Je pense que le problème se situe au niveau de la source argument dans votre layout . J'ai utilisé votre code avec l'URL de cette image au lieu d'un chemin relatif et cela fonctionne parfaitement et voici une capture d'écran sachant que j'ai utilisé un simple tableau comme mon df :

enter image description here

À mon avis, deux options s'offrent à vous pour y remédier :

  • Téléchargez ces images vers un service en nuage et utilisez leurs URL à la place.

  • Ou selon ce qui suit Fil de discussion de la communauté Plolty vous pouvez utiliser Pillow.Image pour lire l'image sur votre machine locale. Vous pouvez l'installer facilement en lançant pip install pillow et modifiez votre code comme suit :

    from PIL import Image
    
    layout= go.Layout(images= [dict(
                      source= Image.open('assets\\MiniLogo.png'),
                      ...)])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X