AttributeError: у объекта 'Figure' нет атрибута savefig в Flask - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь отобразить гистограмму в Flask. Но это означает, что объект 'Figure' не имеет атрибута savefig error. Изображение отображается правильно при использовании fig.show ().

import matplotlib.pyplot as plt
import plotly.express as px

figs = px.bar(
    comp_df.head(10),
    x = "Company",
    y = "Staff",
    title= "Top 10 departments",
    color_discrete_sequence=["blue"],
    height=500,
    width=800
)
figs.savefig('static/images/staff_plot.png')
#    fig.show()
return render_template('plot.html', name='new_plot', url='static/images/staff_plot.png')

На графике. html изображение отображается следующим образом:

<img src={{ url}} >

1 Ответ

1 голос
/ 11 апреля 2020

Вы определили figs с помощью метода px.bar().

По документации px.bar() возвращает объект plotly.graph_objects.Figure.

Просмотр этого plotly.graph_objects.Figure документация класса * мы можем увидеть все методы, доступные в этом plotly.graph_objects.Figure классе. show() представляется допустимым методом для этого типа объекта. Однако для этого класса нет метода savefig(). Вот почему fig.show() работает, а fig.savefig() не работает.

Похоже, что в классе matplotlib.pyplot есть savefig() метод, как задокументировано здесь , однако ваш figs объект является экземпляром plotly.graph_objects.Figure, а не matplotlib.pyplot.

Если ваша цель - записать ваш объект figs в файл, похоже, что в документации указаны 3 метода, которые предоставляют эту функциональность:

plotly.graph_objects.Figure

Попробуйте заменить:

figs.savefig('static/images/staff_plot.png')

на

figs.write_image(file='static/images/staff_plot.png', format='.png')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...