2016-08-30 4 views
0

오전 9시 30 분부터 오후 4 시까 지 5 분마다 데이터를받습니다. 대부분의 경우 나는 살아있는 intraday 데이터를 플로팅합니다. 그러나 때로는 2 일 이상을 말하는 역사적 관점을 원합니다. 유일한 문제는 오후 4시와 9시 30 분에 두 개의 데이터 포인트를 연결하는 선이 생기는 것입니다. 나는 그 격차가 사라지기를 바란다. 내 코드와 일어나는 일의 예가 아래에 있습니다. Python의 Matplotlib을 무시하는 시간 간격을 무시합니다.

fig = plt.figure() 
plt.ylabel('Bps') 
plt.xlabel('Date/Time') 
plt.title(ticker) 
ax = fig.add_subplot(111) 
myFmt = mdates.DateFormatter('%m/%d %I:%M') 
ax.xaxis.set_major_formatter(myFmt) 
line, = ax.plot(data['Date_Time'],data['Y'],'b-') 

enter image description here

내가 위로 스크롤 할 때 나는 정확한 날짜와 시간을 볼 수 있도록 시계열로 데이터를 유지하려면

.

+0

가장 좋은 전략은 아니지만 오전 9 시부 터 오후 4 시까 지에만 관심이 있으니 계획중인 데이터에서 오후 4시에서 9시 사이를 필터링 할 수는 없습니까? – Abdou

+0

matplotlib가 자동으로 그 사이에 채울 수 있도록 시계열로 표시됩니다. 그건 내 데이터가 아니라 단지 두 지점을 연결하는 라인. –

+0

아, 알겠습니다. [this] (http://stackoverflow.com/questions/5656798/python-matplotlib-is-there-a-way-to-make-a-discontinuous-axis) 선과 해당 축 영역이 사라지는 데 도움이 될 수 있습니다. 그러나 그것은 당신이 쫓고있는 것과 정확히 같지 않을 수도 있습니다. – Abdou

답변

1

그래서 팬더 개체를 사용하는 것처럼 보입니다. 도움이됩니다. 오후 4 시부 터 9시 사이에 언제든지 data['Date_Time'] 번으로 걸러 낸 것으로 가정하면 색인이 data.reset_index()을 통해 재설정되었는지 확인합니다. matplotlib가 timeseries를 그릴 때 실제로 사용하는 under-the-hood 인덱스로 그 정수 인덱스를 사용하고자 할 것입니다. 그런 다음 this demo case에 표시된대로 plt.xticks()으로 직접 눈금 레이블을 변경할 수 있습니다. 함께 넣어 보면 다음과 같이 보일 것입니다 :

data = data.reset_index(drop=True) # just to remove that pesky column 

fig, ax = plt.subplots(1,1) 
ax.plot(data.index, data['Y']) 
plt.ylabel('Bps') 
plt.xlabel('Date/Time') 
plt.title(ticker) 
plt.xticks(data.index, data['Date_Time']) 

나는이 게시물을 게시 한 직후에 마지막 문장을 발견했습니다. 불행히도이 "솔루션"은 대화 형 그림에서 "x"변수를 추적하지 않습니다. 즉, 시간 축 레이블이 줌에 맞게 조정되지만 커서 위치로 시간을 알 수 없으므로 그림의 맨 아래부터 눈금을 맞추어야합니다. :/

+0

저는 이와 비슷한 것을 사용했지만 실제로 x 값을 날짜 시간으로 추적 할 수있는 기능을 원했습니다. –