У меня есть страница с несколькими встроенными фигурами 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.? Иногда я получал проблему, когда часть одной диаграммы была нарисована в другом графике на той же странице. Иногда это исправлялось после перезагрузки. Решение, с которым я столкнулся, заключалось в следующем:
# Force matplotlib to NOT use any Xwindows backend.
# This is necessary before importing pyplot or anything else from matplotlib
import matplotlib
matplotlib.use('Agg')
Однако после обновления до matplotlib версии 1.0.1 проблема вернулась. Цифры мешают друг другу, или части фигуры вообще не рисуются? Любые идеи о том, где может быть проблема?
EDIT: Пример двух графиков в одном. Линии сверху относятся к другой фигуре, где они отсутствуют. Я должен также упомянуть, что это никогда не проблема с сервером разработки локально!