본문 바로가기
파이썬

파이썬 matplotlib를 사용하여 축 레이블에 날짜 및 시간이있는 그래프 만들기

by º기록 2020. 10. 6.
반응형

다음 구조의 배열에 데이터가 있습니다.

[[1293606162197, 0, 0],
 [1293605477994, 63, 0],
 [1293605478057, 0, 0],
 [1293605478072, 2735, 1249],
 [1293606162213, 0, 0],
 [1293606162229, 0, 0]]

첫 번째 열은 에포크 시간 ( ms ), 두 번째 열은 y1 , 세 번째 열은 y2 입니다. x 축에 시간이 있고 왼쪽 및 오른쪽 y 축에 y1 y2 가있는 플롯이 필요합니다.

문서를 샅샅이 뒤졌지만 "28/12 16:48", 즉 "date / month hour : min"과 같이 x 축 눈금이 날짜와 시간을 모두 표시하도록하는 방법을 찾을 수 없습니다. 나에게 도움이되는 모든 문서는 날짜 만 표시하는 것이지만 내가 원하는 것은 아닙니다. 이것에 대한 도움을 주시면 감사하겠습니다.


 

해결 방법

 


import numpy as np
from matplotlib import pyplot as plt
from matplotlib import dates
import datetime

a = np.array([
    [1293605162197, 0, 0],
    [1293605477994, 63, 0],
    [1293605478057, 0, 0],
    [1293605478072, 2735, 1249],
    [1293606162213, 0, 0],
    [1293606162229, 0, 0]])

d = a[:,0]
y1 = a[:,1]
y2 = a[:,2]

# convert epoch to matplotlib float format
s = d/1000
ms = d-1000*s  # not needed?
dts = map(datetime.datetime.fromtimestamp, s)
fds = dates.date2num(dts) # converted

# matplotlib date format object
hfmt = dates.DateFormatter('%m/%d %H:%M')

fig = plt.figure()
ax = fig.add_subplot(111)
ax.vlines(fds, y2, y1)

ax.xaxis.set_major_locator(dates.MinuteLocator())
ax.xaxis.set_major_formatter(hfmt)
ax.set_ylim(bottom = 0)
plt.xticks(rotation='vertical')
plt.subplots_adjust(bottom=.3)
plt.show()

결과

 

참조 페이지 https://stackoverflow.com/questions/5498510

 

 

반응형

댓글