Генерация динамических диаграмм с помощью Matplotlib в Django - PullRequest
1 голос
/ 14 апреля 2011

Таким образом, у меня есть 2 представления: первое генерирует HTML по запросу, второе представление генерирует диаграмму, отображаемую для первого просмотра.

Представление HTML

def activation_signupcount(request):

    if 'datestart' not in request.GET:

        return render_to_response('activation/activation_signupcount.html', {'datestart':''})

    else:

        datestart = request.GET['datestart']
        dateend = request.GET['dateend']

        return render_to_response('activation/activation_signupcount.html', {'datestart':datestart, 'dateend':dateend})#

РАСПИСАНИЕ КАРТЫ

def activation_signupcount_graph(request):

    datestart = request.GET['datestart'] #this doesnt work
    dateend = request.GET['dateend'] #this doesnt work

    print datestart,dateend

    # open sql connection
    cursor = connection.cursor()
    # execute query
    cursor.execute("SELECT COUNT(1), JoinDate FROM users WHERE JoinDate BETWEEN '"+ datestart +"' AND '"+ dateend +"' GROUP BY JoinDate;")
    # close connection

    data = cursor.fetchall()

    cursor.close()
    connection.close() 

    fig = Figure()
        ax = fig.add_subplot(111)

    x = []
    y = []

    x = [k[1] for k in data]
    y = [k[0] for k in data]

    ax.plot_date(x, y, '-')
    ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
    fig.autofmt_xdate()
    canvas = FigureCanvas(fig)
    response = HttpResponse(content_type='image/png')
    canvas.print_png(response)

    return response

Итак, на странице activation/activation_signupcount.html у меня есть 2 поля даты, начало и конец, которое отправляет запрос GET.Итак, мой вопрос: как я могу проанализировать эти две переменные даты в моей функции activation_signupcount_graph, чтобы получить даты начала / окончания генерации диаграммы?

Надеюсь, это было ясно!

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Вы можете получить доступ к вашему виду диаграммы в своем шаблоне, используя url-templatetag с соответствующими параметрами.

Так должно выглядеть:

<img src="{% url yourapp.chart_view start_date end_date %}" />

Или, если вы используете get-параметры:

<img src="{% url yourapp.chart_view %}?datestart={{ datestart }}" />
0 голосов
/ 14 апреля 2011

делал это годами (кстати, работает и с PySVG-генерируемыми SVG-графиками), однако недавно я столкнулся со многими проблемами с установкой matplotlib в virtualenvs.

Я прибегнул к добавлению общесистемных библиотек matplotlib (из репозиториев Ubuntu) в virtualenvs вместо обычной установки pip .... anthem

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