Có công thức trong Matplotlib Cookbook thực hiện chính xác việc này. Ở cốt lõi của nó, có vẻ như:
def simple(request):
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
fig=Figure()
ax=fig.add_subplot(111)
ax.plot(range(10), range(10), '-')
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
Đặt điều đó vào tệp lượt xem, trỏ URL của bạn đến đó và bạn đang tắt và chạy.
Chỉnh sửa: Như đã lưu ý, đây là phiên bản đơn giản của công thức trong sách dạy nấu ăn. Tuy nhiên, có vẻ như có sự khác biệt giữa việc gọi số print_png
và savefig
, ít nhất là trong thử nghiệm ban đầu mà tôi đã làm. Gọi số fig.savefig(response, format='png')
cho hình ảnh lớn hơn và có nền trắng, trong khi hình ảnh gốc canvas.print_png(response)
đã cho hình ảnh hơi nhỏ hơn với nền màu xám. Vì vậy, tôi sẽ thay thế một vài dòng cuối cùng ở trên bằng:
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
fig.savefig(response, format='png')
return response
Bạn vẫn cần phải có canvas khởi tạo.
Nguồn
2009-07-10 21:56:05
Có một vài gợi ý khác trông giống như chúng sẽ hoạt động, nhưng DEFINITELY này trông giống như dễ nhất để tôi sử dụng. Tôi chỉ phải thêm khoảng 2 hoặc 3 dòng mã! Cảm ơn bạn – DarwinSurvivor