python - 如何在烧瓶应用程序中自定义 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 %}
解决方案
推荐阅读
- python - 无法使用 Pip 在 Python 3 中安装特定的库加密
- angular - Angular:设置它们后如何在组件中获取常量值?
- grep - 根据唯一 ID 计算文件中的文本匹配
- javascript - 固定定位元素顶部
- c++ - 从字符串中读取十六进制值并将它们存储到 c/c++ 中的整数数组中
- c# - 在 WPF 中设置应用程序图标的大小
- qt - OpenCV 和 Qt 存在 32-64 位问题
- angular - Angular http get 返回未定义
- c# - 带有企业库数据 (EnterpriseLibrary.Data.NetCore) 和 JSON 的 dotNet 核心(控制台应用程序)
- html - 在 html 模板中的 json 中查找特定 id 的对象