#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 %}