2013-07-17 258 views
6

我想繪製一些時間戳(年 - 月 - 日 - 小時 - 分鐘 - 秒格式)。我使用下面的代碼,但它不顯示任何小時分秒信息,它將它們顯示爲00-00-00。我仔細檢查了我的日期數組,並且從下面的代碼片段可以看到,它們不是零。使用Matplotlib繪製時間戳(小時/分鐘/秒)

你知道我爲什麼得到00-00-00嗎? enter image description here

import matplotlib.pyplot as plt 
import matplotlib.dates as md 
import dateutil 

dates = [dateutil.parser.parse(s) for s in datestrings] 
# datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000'] 
plt.subplots_adjust(bottom=0.2) 
plt.xticks(rotation= 80) 
ax=plt.gca() 
xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S') 
ax.xaxis.set_major_formatter(xfmt) 
plt.plot(dates[0:10],plt_data[0:10], "o-") 
plt.show() 

回答

7

嘗試在你的圖形放大,你會看到日期時間爲你的x軸尺度的變化擴大。

plotting unix timestamps in matplotlib

我想要繪製染色體陽性選擇的熱圖時,有一個同樣惱人的問題。如果我放大太遠,事情就會完全消失!

編輯:此代碼完全按照您給出的日期繪製日期,但不會在兩者之間添加刻度。

import matplotlib.pyplot as plt 
import matplotlib.dates as md 
import dateutil 

datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000'] 
dates = [dateutil.parser.parse(s) for s in datestrings] 

plt_data = range(5,9) 
plt.subplots_adjust(bottom=0.2) 
plt.xticks(rotation=25) 

ax=plt.gca() 
ax.set_xticks(dates) 

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S') 
ax.xaxis.set_major_formatter(xfmt) 
plt.plot(dates,plt_data, "o-") 
plt.show() 
+0

感謝您的回答。我已經看過「在matplotlib中繪製unix時間戳」問題。但是,我的問題是,Matplotlib不顯示小時分秒,因爲它顯示在「繪製matplotlib中的unix時間戳」問題上。在我的情況下,它只是將它們顯示爲00-00-00,我找不出原因(因爲它好像我的時間戳是正確的)。 – user1048858

+0

你說得對,這是因爲它試圖用蜱填充x軸,看到我編輯的答案。 – seth

0

我可以告訴你它爲什麼顯示00:00:00。這是因爲那是特定日子的開始時間。例如,2012-02-22 00:00:00(2012-02-22午夜12點)和2012-02-23 00:00:00(2012年2月23日12點12點) )。

這兩個時間之間的時間戳蜱沒有顯示。

我自己想弄清楚如何在這些時間之間顯示刻度。

相關問題