У меня есть страница с несколькими вложенными рисунками Matplotlib.Фигуры вставляются / обрабатываются с помощью Ajax следующим образом (с отметкой времени для перезагрузки браузером):
<img src="/charts/somedata.png?time=' + str(time.time()) + '" />
URL-адреса затем сопоставляются с видом, подобным (я должен упомянуть, что я используюDjango):
(r'^charts/(?P<chart>[A-Za-z_]+).png$', 'views.charts'),
def charts(request, chart):
# Dynamically loading the appropriate module
chart_module = import_module('functions.charts.' + chart)
return chart_module.show_chart(request)
Модули диаграмм (somedata.py) выглядят так:
from __future__ import division
from django.http import HttpResponseRedirect, HttpResponse
def show_chart(request):
try:
# Initiating figure
from matplotlib.pyplot import figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
fig1 = figure(figsize=(5.33,4), facecolor = 'white')
ax = fig1.add_axes([0.02,0.02,0.98,0.98], aspect='equal')
# Some plotting to ax
canvas=FigureCanvas(fig1)
response=HttpResponse(content_type='image/png')
canvas.print_png(response)
fig1.clear()
return response
except:
return HttpResponseRedirect("/")
С версией matplotlib 0.99.?Иногда я сталкивался с проблемой, что часть одной диаграммы была нарисована в другой диаграмме на той же странице.Иногда это было исправлено после перезагрузки.Решение, которое я придумал, заключалось в том, чтобы поместить следующее в settings.py:
# Force matplotlib to NOT use any Xwindows backend.
# This is necessary before importing pyplot or anything else from matplotlib
import matplotlib
matplotlib.use('Agg')
Однако после обновления до версии 1.0.1 matplotlib проблема возвращается.Фигуры мешают друг другу, или части фигуры вообще не нарисованы?Любые идеи о том, где может быть проблема?
РЕДАКТИРОВАТЬ: Пример двух графиков в одном.Линии сверху принадлежат другой фигуре, где они отсутствуют.Следует также отметить, что это никогда не является проблемой при запуске сервера разработки локально!