我正在Django中构建一个Web应用程序,我希望根据数据生成动态图。
之前我使用的是谷歌图片图表,但我遇到了api的重大限制,包括URL长度限制。
我已经转而使用matplotlib来创建我的图表。我想知道这对于未来的扩展是否是一个糟糕的决定 - 任何生产网站都使用matplotlib吗?生成单个图表大约需要100毫秒(比查询数据库的时间长得多),在扩展/处理多个请求方面,这简直是不可能的吗?
答案 0 :(得分:1)
如果您可以使用Celery等内容在请求/响应周期之外呈现图表,则可以将matplotlib缩放为图表。您必须管理渲染图表的存储以及在数据更改时使其无效。这实际上取决于数据变化的频率和观看频率。
但是,我倾向于使用客户端库进行图形化,例如jqplot或highcharts。
答案 1 :(得分:0)
对于这种功能,您应该查看消息队列,例如ZeroMQ。这允许您使用不阻止Web服务器进程的异步图生成(如果正确实现)。
答案 2 :(得分:0)
如果性能是一个问题,并且您不需要花哨的图表,那么您可以完全不创建图像。为html中的简单条形图渲染显式大小和彩色div。为眼睛糖果应用盒子阴影和/或渐变背景。
我在一些报告网页上做了这个,在一张大桌子的每一行显示一个小的5条(五分位数)图表,速度很快,几乎没有服务器负载。用户喜欢早期和简洁的反馈。
使用canvas和javascript,您可以针对其他图表类型改进此方案。我不知道你是否可以在不通过他们的API的情况下使用谷歌的图表代码,但是如果不是,那么你应该很容易画出一些线条或圆圈段。