如果我正確理解你的問題,你想從你的數組中提取日子,然後相應地設置圖的x極限。你可以這樣做:
limits = np.index.day
plt.xlim(limits[0], limits[-1])
你行plt.xlim(np, 5)
沒有任何意義,因爲你通過np
模塊和作爲參數傳遞給xlim()
整數5
。
plt.xlim()
接受x軸上最小和最大限制的數值(請參閱docs)。在上面的例子中,我們從numpy
數組中得到日期,並將結果數組的第一個元素設置爲最小x值,將最後一個元素設置爲最大x值。
更新26/01/20174:如果你想繪製跨多個月的日期範圍
,這將是更好地使用相應的datetime對象,並相應地格式化x軸。
我將構造一個簡單的例子,曲線數據從2016年12月29日到2017年1月2日:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DayLocator, DateFormatter
a = pd.DataFrame.from_dict({'Date': pd.date_range('2016-12-29', '2017-01-02'), 'Close': (11.43, 11.44, 11.99, 12.95, 13.37)}).set_index('Date')
print(a)
days = DayLocator()
daysFmt = DateFormatter('%d')
fig, ax = plt.subplots()
ax.plot_date(a.index, a.Close)
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)
plt.show()
結果:
Close
Date
2016-12-29 11.43
2016-12-30 11.44
2016-12-31 11.99
2017-01-01 12.95
2017-01-02 13.37
我試圖PLT。 xlim(限制[0],限制[-1]),但不能繪製任何線條。只是X-Y軸。而X軸只能從22到23. – slard
我想我明白爲什麼這不起作用。因爲他們是日期,他們每個月都會開始。所以如果上面的數組包含2017-1-1,那麼X軸會認爲你從22數到1. – slard
我已經用一個繪製跨多個月的數據的例子更新了我的答案。我希望現在能回答你的問題。 – Milo