0

matplotlibから奇妙な結果がいくつか見られます。これをDjangoに追加するために、ほとんどストックの例を使用しています。

def graph(request):
if request.user.is_authenticated():
    user = request.user.first_name
else:
    return redirect('/login')


form = GetGraphData(request.POST or None)
if form.is_valid():

    os.environ['MPLCONFIGDIR'] = "/tmp"
    from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
    from matplotlib.figure import Figure
    from matplotlib.dates import DateFormatter



    from_date = form.cleaned_data['chosen_from_date']
    to_date = form.cleaned_data['chosen_to_date']
    graph_property = form.cleaned_data['chosen_property']
    rack = form.cleaned_data['chosen_rack']
    query = "select %s,reading_date from readings where reading_date" \
            " between '%s' and '%s' and pdu_location like '%s%%'" \
            %(graph_property,from_date, to_date, rack)



    results = db.db_query(query)

    if results[0]: 
        fig=Figure()
        fig.clear()
        ax=fig.add_subplot(111)
        x=[]
        for i in results[0]:
            x.append(i[1])
        y=[]
        for i in results[0]:
            y.append(i[0])

        ax.plot_date(x, y, '-')
        ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
        ax.set_title(rack)
        ax.set_xlabel("Date")
        ax.set_ylabel(graph_property)
        fig.autofmt_xdate()
        canvas=FigureCanvas(fig)
        response=HttpResponse(content_type='image/png')
        canvas.print_png(response)
        return response
    else:
        error_message = 'There were no results for that query, check' \
                        ' your dates and try again.' 
        return render_to_response('generic_message.html'
                           ,{'message':error_message,'title':'No results'})




template_dict = {'username':user, 'form':form,'view':True}
return render_to_response('get_circuit.html',template_dict)

インデントは正しいです。奇妙なことに上に貼り付けられます。x軸には日時オブジェクトのリストが表示され、y軸にはフロートのリストが表示されます。

以下のグラフを取得します。 ここに画像の説明を入力してください

グラフの左側が非常に奇妙に見えることがわかります。このクエリの一部として返される96個のデータポイントがありますが、y軸に1000個を超えるデータポイントがあると、さらにクレイジーになることにも気づきました。

誰かがこれと戦うための提案がありますか?

4

1 に答える 1

1

ポイントが直線的にプロットされていないようです。日付で注文すると修正されると思います

order by reading_date ASC

于 2013-01-15T20:18:46.340 に答える