2017-12-30 55 views
-1

次のようなリストデータがあります: 最初の要素はPMレベルで、次の要素は日付です。y軸はmatplotlibの値で整列していません

[ 
['83', '89', '88', '86', '85', '83', '86', '85', '86', '89', '88', '89', 
'90', '88', '85', '85', '84', '80', '85', '-', '103', '107', '104', '106'] 

['2017-12-29 15:00', '2017-12-29 16:00', '2017-12-29 17:00', '2017-12-29 18:00', 
'2017-12-29 19:00', '2017-12-29 20:00', '2017-12-29 21:00', '2017-12-29 22:00', 
'2017-12-29 23:00', '2017-12-29 24:00', '2017-12-30 01:00', '2017-12-30 02:00', 
'2017-12-30 03:00', '2017-12-30 04:00', '2017-12-30 05:00', '2017-12-30 06:00', 
'2017-12-30 07:00', '2017-12-30 08:00', '2017-12-30 09:00', '2017-12-30 11:00', 
'2017-12-30 12:00', '2017-12-30 13:00', '2017-12-30 14:00', '2017-12-30 15:00']] 

これは私のプログラムの関連するスニペットの一部です。私はプログラムを実行したとき

@app.route('/pm25') 
def pm25_graph(): 
    data_list = Display.data_retrieval() 
    pm10, pm25, dates = data_list 
    fig = Figure(figsize=(12, 5), dpi=100) 
    ax = fig.add_subplot(111, title="PM 25 Level") 
    ax.plot_date(dates, pm25, '-') 
    fig.autofmt_xdate() 

    canvas = FigureCanvas(fig) 
    png_output = BytesIO() 
    canvas.print_png(png_output) 
    response = make_response(png_output.getvalue()) 
    response.headers['Content-Type'] = 'image/png' 
    return response 

は、私が得た:

the graph that the y-axis values are not arranged by their values

誰かがこの問題を解決する方法を、私を助けてください。事前に多くの感謝。

答えて

1

あなたのy値は文字列であるため、すなわち107が原因大手1未満80で、辞書順にソートされています。あなたは数字に変換する必要があります。

new_pm25 = [] 
for x in pm25: 
    try: 
     new_pm25.append(float(x)) 
    except ValueError: 
     new_pm25.append(float('nan')) 

今、あなたはプロットすることができます

ax.plot_date(dates, new_pm25, '-') 

結果:

enter image description here

+0

グレートを!あなたは私の時間を大いに救った!質問を投稿する方法もありがとうございます。私はあなたが示したように質問をアップロードします。 –

+0

それが助けになりました。あなたの問題が解決されたら、回答を受け入れることができます(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –

+0

どうすればいいですか? 「受け入れる」青い単語を押すだけですか? –

関連する問題