Как вывести график из Matplotlib в шаблонах Django? - PullRequest
1 голос
/ 11 апреля 2011

Данный пример взят из здесь :

def simple(request):
    import random

    from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
    from matplotlib.figure import Figure
    from matplotlib.dates import DateFormatter

    fig=Figure()
    ax=fig.add_subplot(111)
    x=[]
    y=[]
    now=datetime.datetime.now()
    delta=datetime.timedelta(days=1)
    for i in range(10):
        x.append(now)
        now+=delta
        y.append(random.randint(0, 1000))
    ax.plot_date(x, y, '-')
    ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
    fig.autofmt_xdate()
    canvas=FigureCanvas(fig)
    response=django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

Как я могу написать представление таким образом, чтобы использовать шаблон и переменную, например: return render_to_response ('template.html',{'graph': <graph generated by matplotlib> }

1 Ответ

2 голосов
/ 11 апреля 2011

Когда у меня была похожая ситуация, я использовал два представления. Один использовал matplotilb для генерации PNG, а другой использовал шаблоны django для создания HTML-страницы, которая представляла PNG (и некоторые другие данные). Параметр, отправляемый в шаблон, был просто именем файла PNG. Затем другой вид присоединяется к соответствующим URL-адресам .png.

Одна проблема, если вы хотите вычислить некоторые параметры, которые используются как для генерации HTML, так и PNG. Я закодировал такую ​​информацию в имени файла. Это больно и немного хакерски, но также полезно для пользователя, если вся информация находится в имени файла, когда она его сохраняет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...