首页 > 解决方案 > 如何在烧瓶应用程序中自定义 matplotlib 图的工具提示文本

问题描述

作为烧瓶应用程序的一部分,我有一个 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 %}

标签: pythonmatplotlibflaskplotmpld3

解决方案


推荐阅读