在Django项目中使用MPLD3添加图表。

4 投票
2 回答
3044 浏览
提问于 2025-04-18 09:11

我正在做一个Django项目,想从CSV文件中获取数据,然后把这些数据展示在用Django的视图和模板构建的页面上。以下是我目前写的代码:

import matplotlib.pyplot as plt, mpld3

graph = plt.plot([1,2,3,4])
g = mpld3.fig_to_html(graph)
return HttpResponse(g)

但是当我运行这个代码时,出现了错误:

AttributeError: 'list' object has no attribute 'savefig'

有没有人知道我哪里出错了,或者我该怎么做才能把图表添加到我已经有的页面中,而不是MPLD3为你渲染的那个页面。

2 个回答

1

就像 @hck3r 说的,plt.plot 返回的是一系列的 Line2D 对象,而不是一个图形对象。你需要对你的代码做一些小修改:

import matplotlib.pyplot as plt, mpld3

fig = plt.figure()
plt.plot([1,2,3,4])
g = mpld3.fig_to_html(fig)
return HttpResponse(g)
1

plt.plot 返回的是一系列的 Line2D 对象,而不是一个图形对象。

你想要做的是这个:

import matplotlib.pyplot as plt, mpld3
fig = plt.figure()
fid=plt.plot([3,1,4,1,5])
mpld3.save_html(fig,"test.html")
mpld3.fig_to_html(fig,template_type="simple")
mpld3.show()

撰写回答