【发布时间】:2018-07-06 05:45:05
【问题描述】:
我正在使用 Flask 和 Python 3.5。我想在网站上显示一个 matplotplib 图表。我找到了这个例子https://gist.github.com/wilsaj/862153
由于我使用的是 3.5 版本的 Python,因此我对 StringIO 部分进行了少量修改。
@bp.route("/simple.png")
def simple():
import datetime
import io
import numpy as np
import random
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.dates import DateFormatter
fig=Figure()
ax=fig.add_subplot(111)
x=[]
y=[]
now=datetime.datetime.now()
delta=datetime.timedelta(days=1)
for i in range(10):
x.append(now)
now+=delta
y.append(random.randint(0, 1000))
ax.plot_date(x, y, '-')
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
fig.autofmt_xdate()
canvas=FigureCanvas(fig)
png_output = io.BytesIO()
png_output_text = np.genfromtxt(png_output, delimiter=",")
canvas.print_png(png_output_text)
response=make_response(png_output_text.getvalue())
response.headers['Content-Type'] = 'image/png'
return response
我收到的错误:
Traceback (most recent call last):
File "c:\proofdevelopment\flask\flask\app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "c:\proofdevelopment\flask\flask\app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\proofdevelopment\flask\flask\app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\proofdevelopment\flask\flask\_compat.py", line 33, in reraise
raise value
File "c:\proofdevelopment\flask\flask\app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "c:\proofdevelopment\flask\flask\app.py", line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\ProofDevelopment\flask\examples\flaskr\flaskr\blueprints\flaskr.py", line 107, in simple
canvas.print_png(png_output_text)
File "C:\Users\nmartinez\AppData\Local\Continuum\miniconda3\envs\py35\lib\site-packages\matplotlib\backends\backend_agg.py", line 526, in print_png
self.figure.dpi, metadata=metadata)
TypeError: Object does not appear to be a 8-bit string path or a Python file-like object
我只想运行那个“简单”的例子,但我没能做到:(
【问题讨论】:
-
请发布包含回溯的整个错误消息。这是必不可少的,因为它会告诉我们是哪一行导致了错误消息。否则,我们必须猜测,我们可能猜对也可能猜错。或者,我们可能会跳过您的问题,然后继续向我们提供有关该问题的更多信息的问题。
-
Traceback 有很多有用的上下文
-
这似乎不是整个回溯
-
png_output_text = np.genfromtxt(png_output, delimiter=",")是从哪里来的?
标签: python matplotlib flask python-3.5