2017-12-30 3 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- 값은 문자열이며 따라서 사전 식으로 정렬됩니다. 즉, 1071으로 인해 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

그게 도움이 됐어. BTW, 귀하의 문제를 해결하는 경우 답변을 [수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 할 수 있습니다. –

+0

어떻게해야합니까? 파란색 단어 "수락"을 누르십니까? –

관련 문제