2017-07-07 17 views
-1

我有一個程序,在不同的時間開始和結束,我已經捕獲了時間。使用python2.7爲一個程序開始和結束在各個時間戳

實施例:

[('05:43:44', '05:43:51'), ('05:59:32', '05:59:39'), ('06:14:46', '06:41:03'), ('06:41:16', '06:42:57')] 

的開始和結束時間被用於在元組的實例配對在一起,如下所示。

{ Example [(1st start time, 1st end time), (2nd start time, 2nd end time) ..and so on } 

我想繪製曲線的開始,結束時間的程序和一個有意義的圖形。請向我提供如何在Python 2.7中進行繪圖的想法。

我試圖運行這一點,但獲得值錯誤

測試數據:
[('05:43:44' ,'05:59:32' ,'06:14:46' ,'六時41分16秒 '),(' 5點43分51' 秒,'05:59:39' ,'06:41:03' ,'06:42:57' )] *

import matplotlib.pyplot as plt 
plt.scatter(*zip(*zipped_files)) 
plt.show() 

錯誤:

ValueErrorTraceback (most recent call last) 
<ipython-input-84-713cb20ee252> in <module>() 
1 import matplotlib.pyplot as plt 
2 
----> 3 plt.scatter(*zip(*zipped_files)) 
4 plt.show() 
ValueError: invalid literal for float(): 05:43:44 
+0

你有沒有看過[matplotlib](https://matplotlib.org/)? –

+0

感謝您的建議。我確實使用過matplotlib,但是我遇到了問題。庫不能解析時間戳值。我得到錯誤ValueError:無效文字爲float():05:43:44。所以我需要一種方法來處理這些時間戳 – ran1n

回答

1

您需要使用datetime模塊將數據轉換爲日期時間對象。以下是爲您提供的數據一個完整的例子:

import matplotlib.pyplot as plt 
import datetime 

data = [('05:43:44', '05:59:32', '06:14:46', '06:41:16'),('05:43:51', '05:59:39', '06:41:03', '06:42:57')] 

x = [i[0] for i in data] 
y = [i[1] for i in data] 

new_x = [datetime.datetime.strptime(i, "%H:%M:%S") for i in x] 
new_y = [datetime.datetime.strptime(i, "%H:%M:%S") for i in y] 

plt.plot(new_x,new_y) 
plt.show() 

這將產生以下圖表:

enter image description here

您可以更好地利用autofmt_xdate()格式化x軸:

fig, ax = plt.subplots() 

ax.plot(new_x,new_y)  
fig.autofmt_xdate() 

plt.show() 

其中給出:

enter image description here

+0

感謝DavidG的詳細信息。我正在使用您提供的代碼示例。 – ran1n

+0

沒問題。如果這回答了您的問題,請確保將upvote/accept標記爲已解決的問題 – DavidG

0

看起來像要生成一個最適合繪製開始時間和結束時間的最佳擬合。您可以使用matplotlib做到這一點:

from matplotlib import pyplot as plt 
l = EXAMPLE LIST 
starts = list(i[0] for i in l) 
ends = list(i[1] for i in l) 
plt.plot(starts, ends, -b) 
plt.show() 

您可以使用polyfit產生最佳擬合線/曲線達到目標。希望這有助於至少給出做什麼的一般概念,即使它不是你正在尋找的東西。

+0

感謝您的建議。我確實使用過matplotlib,但是我遇到了問題。庫不能解析時間戳值。我得到錯誤ValueError:無效文字爲float():05:43:44。所以我需要一種方法來處理這些時間戳。 – ran1n

相關問題