как настроить текст всплывающей подсказки для рисунка matplotlib в приложении flask

#python #matplotlib #flask #plot #mpld3

Вопрос:

Как часть приложения flask, у меня есть рисунок matplotlib, к которому я хотел бы добавить подсказку, с помощью которой я могу управлять отображением текста.

Для этого я использовал библиотеку mpld3 (см. Код ниже), но, поскольку всплывающая подсказка может содержать много текста, а mpld3 отображается на холсте, я не могу контролировать способ отображения текста всплывающей подсказки. Это приводит к тексту, который выходит за рамки рисунка, как показано на следующем рисунке:

введите описание изображения здесь

Я хотел бы иметь возможность размещать текст подсказки в нескольких строках (возможно, в поле?), как только он превысит определенный размер. Можно ли этого достичь с помощью mpld3? Если нет, то есть ли другая библиотека, которую кто-то, не имеющий опыта работы с интерфейсом, может легко использовать для достижения этой цели?

содержание demo_plot.py:

 import matplotlib.pyplot as plt
import mpld3
import numpy as np


def demo_plot():
    # plot the figure
    N = 10
    fig, ax = plt.subplots()
    ax.title.set_text('Some title')
    lines = ax.plot(list(range(N)), np.random.normal(size=N), marker='o')
    labels = [
        f'Some very long text for point {i} that cannot be rendered well'
        for i in range(N)]
    mpld3.plugins.connect(fig, mpld3.plugins.PointLabelTooltip(lines[0], labels=labels))
    plot = mpld3.fig_to_html(fig)
    return plot
 

содержание routes.py:

 from flask import render_template
from app import app
from src.backend.demo_plot import demo_plot


@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html', title='Home')


@app.route('/demo', methods=['GET', 'POST'])
def demo():
    html_plot = demo_plot()
    return render_template('demo.html', title='Demo', html_plot=html_plot)
 

содержание demo.html:

 {% extends "base.html" %}

{% block content %}
    <h1> Demo Plot </h1>
    {{html_plot|safe}}
{% endblock %}