0
這個問題有兩個部分。如果缺乏其他來源的搜索,請耐心等待。這是我的問題的一部分。matplotlib中有沒有現成的解決方案來繪製時間?
我用tespeed產生的數據寫了一個腳本。數據格式爲「YYYYMMDDhhmm,降速,升速,單位,服務器」(hh:...)。
201309221537,0.28,0.04,"Mbit","['speedtest server']"
201309221542,5.78,-1.00,"Mbit","['speedtest server']"
201309221543,0.15,0.06,"Mbit","[...]"
此腳本繪製上述數據:
#!/usr/bin/env
python2.7
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import csv
def main():
x = []
y = []
with open('/path/to/my/public_html/stdout_tespeed_log.csv','r') as csvfile:
strData = csv.reader(csvfile, delimiter=',')
for row in strData:
x += [float(row[0])]
y += [float(row[1])]
fig = plt.figure()
plt.plot(x,y,'+', label='Average download')
plt.gca().xaxis.major.formatter.set_scientific(False)
plt.gca().xaxis.major.formatter.set_powerlimits((-2,13))
locs,labels = plt.xticks()
plt.xticks(locs, map(lambda x: "%12.0f" % x, locs))
plt.axis([x[0], x[-1],0,6.5])
plt.xticks(rotation=20)
plt.xlabel('Date [YYYYMMDDhhmm]')
fig.subplots_adjust(bottom=0.2)
# plt.legend(loc=3)
plt.gcf().autofmt_xdate()
plt.savefig("/path/to/my/public_html/speed.png")
main()
在結束這產生這樣的曲線圖:
時間軸沒有很好地配置。 : - /週期性出現的差距是因爲每小時沒有60-99分鐘的事實。
有沒有一些優雅的方式來完成這一點?也許準備好去模塊? ;-)
更換繪製之前解析日期'datetime'對象。 'x + = [datetime.strptime(row [0],'%Y%m%d%H%M%S')]' –
@ViktorKerkez:好的,插入'import datetime'並替換您的建議。得到錯誤'AttributeError:'模塊'對象沒有屬性'strptime''。 datetime應該是finde,因爲>>> >>> print(dt.date.today())2013-09-22'表現了預期的行爲。 –
使用'from datetime import datetime'。該模塊有一些不幸的命名選擇。 – tacaswell