gpt4 book ai didi

python - matplotlib 的 'webagg' 后端可以与我的 Django 站点一起使用吗?

转载 作者:行者123 更新时间:2023-12-04 03:13:05 28 4
gpt4 key购买 nike

我在这个主题上搜索了很多,但我不是 Web 开发人员,所以我知道我错过了一些概念。

当我在本地运行 matplotlib 并指定“webagg”后端时,运行 plt.show() 会启动一个轻量级的网络服务器,并在我的浏览器中以完整的交互功能打开绘图。

import matplotlib as mpl
mpl.use('webagg')
from matplotlib import pyplot as plt
import numpy as np

f,ax = plt.subplots(1)
ydata = np.random.randint(0,100,100)
xdata = np.linspace(1,100,100)
ax.plot(xdata,ydata,picker=5)
ax.set_title('Click the line to change the color')

def onpick(event):
event.artist.set_color('red')

f.canvas.draw_idle()
f.canvas.mpl_connect('pick_event', onpick)

plt.show()

我的问题是:是否可以在我的 Django 网站上使用 webagg 后端来为用户提供整洁的交互式 matplotlib 图形?换句话说,我可以在我的 django 网站的某个地方使用上面的代码,以便将情节嵌入到网页中吗?

(我知道像 mpld3 这样的工具,它们非常酷,但没有在 matplotlib 中完全重新创建小部件/选择器功能)。

最佳答案

有一个示例说明如何使用 web_agg and Tornado 嵌入交互式图形。 .我成功地将其更改为使用 Flask,但仍使用 Tornado Web 套接字。首先尝试运行下面的示例,看看交互性对您来说是否“足够好”。当我运行它时,响应并不是真的 super 活泼(如果你想了解更多信息,请阅读最后一部分)。

基本上要在网页上实现它,您使用 websocket 发送/接收交互部分的消息,并在必须重绘时将绘图作为二进制数据发送。

按照示例,可以直接使用不同的框架/服务器(查看上面的链接了解更多详细信息):

  • 像平常一样创造你的身材。
  • 使用 webagg 后端为您的人物创建管理器
  • 提供 mpl.js
  • 实现一个 websocket 对象,它需要 send_json 和 send_binary 函数(当你将 websocket 添加到管理器时,这些是从 webagg python 代码中调用的)
  • 在您在客户端提供的模板中。使用 javascript 创建一个 websocket 并使用 mpl.js 创建一个图形。

  • 好好看通 webagg github stuff (webagg_core、webagg、mpl.js,也许还有 nb_agg)。我知道这不是一个完整的答案,但希望它为您提供一些关于您需要做什么的方向。

    关于第一段中的评论有点偏离主题:

    不幸的是,我是 Web 开发的新手,以确定响应是否是示例中 web_agg 实现方式的限制,或者它是否取决于您的服务器/后端/线程的设置方式。从我所看到的 jupyter 笔记本 nb_agg 后端也使用了 web_agg 后端的一部分,并且似乎在笔记本中的响应速度更快。但我可能应该提出一个单独的问题来讨论这些问题。

    关于python - matplotlib 的 'webagg' 后端可以与我的 Django 站点一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43356795/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com