我沒有測試過,但可以工作。您必須使用backend_agg將畫布作爲png格式進行打印,以作爲mimetype圖像/ png文件進行處理。
更好的方法似乎是寫一個視圖來輸出字符。
的看法是這樣的:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from django.http import HttpResponse
def bar_chart(request):
if request.GET.get('data', False):
data = (1,2,9)
else:
if type(request.GET['data']) == list():
data = request.GET['data']
chart = plt.bar(np.arange(3), data, 0.35, color='r')
canvas = FigureCanvas(chart)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
# inside urls.py
#
# url(r'^charts/bar_chart.png$', 'myapp.views.charts.simple', name="bar_chart"),
而在你的模板,您可以用這樣的方式:
<h1>My Bar Char</h1>
<img src="{% url bar_chart %}?data=[10,20,40,50,30,50]" />
這將使:
<h1>My Bar Char</h1>
<img src="/charts/bar_chart.png?data=[10,20,40,50,30,50]" />
我希望你能考它並完成這個答案。
您是否在尋找一個解決方案matplotlib或可繪製水平條形圖的任何解決方案? – 2011-02-14 21:24:54