-1
각 포트의 에포크 (초) 플러스 52 바이트 카운트의 2D 배열이 있습니다. 바이트 수를 초당 메가 비트로 마사지하여 " 분 "을 입력하십시오 :matplotlib X 축에 공통 날짜가있는 여러 줄
import sys
import time
import math
import MySQLdb as mdb
import numpy
import matplotlib
matplotlib.use('MacOSX')
import matplotlib.pyplot as plt
plt.grid(True)
plt.ylabel('Megabits Per Second')
plt.xlabel('Minutes')
DBconn = mdb.connect('minotaur', 'root', '<password>', 'Monitoring')
cursor = DBconn.cursor()
sql = "select * from OfficeSwitchBytes where ComputerTime >= (unix_timestamp(now())-(60*60))"
cursor.execute(sql)
A = numpy.fromiter(cursor.fetchall(), count=-1, dtype=[('', numpy.uint32)]*53)
A = A.view(numpy.uint32).reshape(-1, 53)
(samples,ports)=A.shape
# NO NO NO plt.axis(xmax=samples)
print samples,ports
plotme=numpy.zeros((samples,ports-1))
for y in range(ports-1):
for x in range(samples-1):
seconds = A[x+1,0]-A[x,0]
if A[x+1,y+1]>=A[x,y+1]:
plotme[x,y] = ((A[x+1,y+1]-A[x,y+1])*8/seconds)/1e6
else:
print'#'
plotme[x,y] = None
plotme[samples-1,y] = None
plt.plot(plotme)
plt.show()
이제 X 축에 타임 스탬프를 갖고 싶습니다. 다음 코드가 추가되었습니다.
epoch = A[:,0]
dts = map(datetime.datetime.fromtimestamp,epoch)
fdts = matplotlib.dates.date2num(dts)
hfmt = matplotlib.dates.DateFormatter('%m/%d %H:%M')
plt.gca().xaxis.set_major_formatter(hfmt)
plt.gca().xaxis.set_major_locator(matplotlib.dates.HourLocator())
plt.plot(fdts,plotme)
plt.gcf().autofmt_xdate()
plt.show()
타임 스탬프가 약간 비슷하더라도 모두 작동했습니다.
죄송합니다. 앞으로 더 쉽게 찾을 수 있다고 생각합니다. – wpns
아니요, 그렇게하면 미래에 찾을 수 있습니다. 답변 (왼쪽의 큰 회색 확인란)을 선택하고 제목을 편집하여 '해결됨'을 제거하십시오. – tacaswell