我正在尝试在this和this问题之后显示带有matplotlib和django的图,但是似乎不起作用,我尝试了两种解决方案,并且仅在使用IO
时得到了空画布,但是当我尝试绘制“真实”图时,标题出现错误。
这是我的观点:
import django
from matplotlib.backends.backend_agg import FigureCanvasAgg as
FigureCanvas
from matplotlib.figure import Figure
import numpy as np
import matplotlib.pyplot as plt
import io
def mplimage(request):
fig = Figure()
canvas = FigureCanvas(fig)
x = np.arange(-2, 1.5, .01)
y = np.sin(np.exp(2 * x))
plt.plot(x, y)
buf = io.BytesIO()
plt.savefig(buf, format='png')
plt.close(fig)
response = django.http.HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
以及urls.py
中的链接:
import mpl.views
url(r'mplimage.png', mpl.views.mplimage)
答案 0 :(得分:0)
如果使用print_jpg()
而非print_png()
方法将文件对象另存为JPEG(需要PIL)而不是PNG,则此方法有效。
更改:
response = django.http.HttpResponse(content_type='image/png')
canvas.print_png(response)
致:
response = HttpResponse(content_type='image/jpg')
canvas.print_jpg(response)
答案 1 :(得分:0)
from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
import numpy as np
import django
def showimage(request):
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
x = np.arange(-2,1.5,.01)
y = np.sin(np.exp(2*x))
ax.plot(x, y)
response = HttpResponse(content_type='image/jpg')
canvas.print_jpg(response)
return response