2014-08-27 140 views
6

我的python打印數據僅在x軸上顯示2個點。更改matplotlib中X(時間,非數字)頻率上的打勾頻率

我想有更多,但不知道如何。

x = [ datetime.datetime(1900,1,1,0,1,2), 
     datetime.datetime(1900,1,1,0,1,3), 
     ... 
     ]           # (more than 1000 elements) 
y = [ 34, 33, 23, ............ ] 

plt.plot(x, y) 

X軸僅顯示2個點的間隔。我試圖使用.xticks,但不適用於X軸。 它給了以下錯誤:

TypeError: object of type 'datetime.datetime' has no len() 
+0

你使用的是什麼版本的mpl? – tacaswell 2014-08-28 00:08:48

+0

我真的不明白你的問題。 – tacaswell 2014-08-28 00:14:13

+0

你確定只顯示2分嗎?你可以這樣做,看看情節認爲它有什麼數據: plt.gca()。lines [0] .get_data() 這些點是否可能過於靠近? – Lukeclh 2014-08-28 00:21:47

回答

-1
plt.plot(matplotlib.dates.date2num(x), y) # matplotlib needs float-s, not <datetime.datetime> instances 
+0

mpl將對'datetime'對象進行繪圖。 – tacaswell 2014-08-28 00:11:30

11

不管什麼原因,你只在默認情況下得到2個蜱,您可以通過使用日期定位改變股票定位修復它(自定義)。

import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

x = [ datetime.datetime(1900,1,1,0,1,2), 
     datetime.datetime(1900,1,1,0,1,3), 
     ... 
     ]           # (more than 1000 elements) 
y = [ 34, 33, 23, ............ ] 

fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 
plt.plot(x, y) 

ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=15)) #to get a tick every 15 minutes 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))  #optional formatting 

你有幾個定位器(例如:DayLocator,WeekdayLocator,MonthLocator等)的文檔中讀到它:

http://matplotlib.org/api/dates_api.html

但也許這個例子可以幫助更多:

http://matplotlib.org/examples/api/date_demo.html