Множественное искажение графика Sns в колбе с использованием savefig и sendfile

У меня есть файл html, в котором отображаются изображения, отправленные из бэкэнда фляги.

<body>
    
    <h3> Count plot of data according to Lead origin.</h3>

    <img src = "/graph_visualization/" alt = "graph it is" height = "300" width = "300">

    <h3> Count plot of data according to cities</h3>

    <img src = "/graph_visualization2/" alt = "graph it is" height = "300" width = "300">

    <h3> Count plot of data according to Countries</h3>

    <img src = "/graph_visualization3/" alt = "graph it is" height = "300" width = "300">

</body>

Три графика отправляются в виде файла png из нескольких функций в бэкэнде flask, как показано ниже:

@app.route('/graph_visualization/')
def graph_visualization():
    fig, ax = plt.subplots()
    df = pd.read_csv(r'C:\Users\Admin\Downloads\export.csv')
    sns.countplot(x="Lead Origin", hue="Converted", data=df)
    canvas = FigureCanvas(fig)
    img = BytesIO()
    fig.savefig(img, format='png')
    img.seek(0)
    return send_file(img, mimetype='image/png', cache_timeout=-1)


@app.route('/graph_visualization2/')
def graph_visualization2():
    fig1, ax = plt.subplots()
    df = pd.read_csv(r'C:\Users\Admin\Downloads\export.csv')
    sns.countplot(x="Cities", hue="Converted", data=df)
    xticks(rotation=90)
    plt.tight_layout()
    canvas = FigureCanvas(fig1)
    img1 = BytesIO()
    fig1.savefig(img1, format='png')
    img1.seek(0)

    return send_file(img1, mimetype='image/png', cache_timeout=-1)


@app.route('/graph_visualization3/')
def graph_visualization3():
    fig2, ax = plt.subplots()
    df = pd.read_csv(r'C:\Users\Admin\Downloads\export.csv')
    sns.barplot(x="Countries", y="Converted", data=df)
    xticks(rotation=90)
    plt.tight_layout()
    plt.ylabel('Converted')
    plt.xlabel('Countries')
    canvas = FigureCanvas(fig2)
    img2 = BytesIO()
    fig2.savefig(img2, formar='png')
    img2.seek(0)

    return send_file(img2, mimetype='image/png', cache_timeout=-1)

Примечание: индивидуальный график отображается, когда я комментирую любые две функции и оставляю только одну. Проблема в том, что я раскомментирую их все.

Я пробовал следующие методы:

  1. Изменение имени фигуры и имени изображения в каждой функции.
  2. plt.clf() ниже fig.savefig()
  3. ax.clear() ниже fig, ax = plt.subplots()
  4. Запускаем в режиме инкогнито.

Примечание: я не хочу делать несколько сюжетных линий.

Пожалуйста, дайте мне знать, если мой подход к проблеме неверен.

0 ответов

Другие вопросы по тегам