2017-10-10 8 views
0

저는 파이썬으로 초보자이며 다음과 같은 문제점이 있습니다. x 축에 날짜 데이터가 표시되는 데이터 집합을 플롯하려고합니다. 데이터 세트 모양은 다음을 좋아합니다.파이썬 matplotlib에서 x 축 레이블 (날짜)이 잘못 표시됩니다.

datum, start, end 
2017.09.01 38086 37719,8984 
2017.09.04 37707.3906 37465.2617 
2017.09.05 37471.5117 37736.1016 
2017.09.06 37723.5898 37878.8594 
2017.09.07 37878.8594 37783.5117 
2017.09.08 37764.7383 37596.75 
2017.09.11 37615.5117 37895.8516 
2017.09.12 37889.6016 38076.8789 
2017.09.13 38089.1406 38119.0898 
2017.09.14 38119.2617 38243.1992 
2017.09.15 38243.7188 38325.9297 
2017.09.18 38325.3086 38387.2188 
2017.09.19 38387.2188 38176.0781 
2017.09.20 38173.2109 38108.0391 
2017.09.21 38107.2617 38109.2109 
2017.09.22 38110.4609 38178.6289 
2017.09.25 38121.9102 38107.8711 
2017.09.26 38127.25 37319.2383 
2017.09.27 37360.8398 37244.3008 
2017.09.28 37282.1094 37191.6484 
2017.09.29 37192.1484 37290.6484 

첫 번째 열에는 x 축 레이블 (날짜)이 있습니다. I는 다음과 같은 코드를 작성할 때

X 축 데이터 미끄러 :

resulted figure

데이터 셋의 제 2 데이터 행 '2017.09이며 다음과 같이

import pandas as pd 
import matplotlib.pyplot as plt 

bux = pd.read_csv('C:\\Home\\BUX.txt', 
       sep='\t', 
       decimal='.', 
       header=0) 
fig1 = bux.plot(marker='o') 
fig1.set_xticklabels(bux.datum, rotation='vertical', fontsize=8) 

생성 된 그림 모양이 좋아 .04 37707.3906 37465.2617 '이지만'2017.09.04 '는 시작 값이 37471.5117 인 세 번째 데이터 행에서 yield입니다.

내가하는 쉘 올바른 x 축 레이블을 얻으려면?

감사합니다.
아그네스

답변

0

첫째, . 대신 두 번째 줄에 쉼표가 있습니다. 조정해야합니다. 그런 다음 "데이텀"열을 실제 날짜로 변환하고 단순히 matplotlib로 데이터 프레임을 플롯합니다.

import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv('data/BUX.txt', sep='\s+') 
df["datum,"] = pd.to_datetime(df["datum,"], format="%Y.%m.%d") 

plt.plot(df["datum,"], df["start,"], marker="o") 
plt.plot(df["datum,"], df["end"], marker="o") 
plt.gcf().autofmt_xdate() 
plt.show() 

enter image description here

0

감사합니다! 그것은 완벽하게 작동합니다. 중요한 순간은 날짜 형식으로 데이터를 변환하는 것이 었습니다. 다시 감사합니다!

아그네스

0

사실 당신은 쉽게 해결하기 위해 df.plot()를 사용할 수 있습니다

import pandas as pd 
import matplotlib.pyplot as plt 
import io 
t=""" 
date  start  end 
2017.09.01 38086  37719.8984 
2017.09.04 37707.3906 37465.2617 
2017.09.05 37471.5117 37736.1016 
2017.09.06 37723.5898 37878.8594 
2017.09.07 37878.8594 37783.5117 
2017.09.08 37764.7383 37596.75 
2017.09.11 37615.5117 37895.8516 
2017.09.12 37889.6016 38076.8789 
2017.09.13 38089.1406 38119.0898 
2017.09.14 38119.2617 38243.1992 
2017.09.15 38243.7188 38325.9297 
2017.09.18 38325.3086 38387.2188 
2017.09.19 38387.2188 38176.0781 
2017.09.20 38173.2109 38108.0391 
2017.09.21 38107.2617 38109.2109 
2017.09.22 38110.4609 38178.6289 
2017.09.25 38121.9102 38107.8711 
2017.09.26 38127.25 37319.2383 
2017.09.27 37360.8398 37244.3008 
2017.09.28 37282.1094 37191.6484 
2017.09.29 37192.1484 37290.6484 
""" 
import numpy as np 

data=pd.read_fwf(io.StringIO(t),header=1,parse_dates=['date']) 
data.plot(x='date',marker='o') 
plt.show() 

enter image description here

관련 문제