0

次の行:

import Quandl
import datetime
import matplotlib.pyplot as plt

# Import data from Quandl
DJI  = Quandl.get("WREN/W6", trim_start="1980-01-01", trim_end= datetime.date.today())

'''
type(DJI)   =>   class 'pandas.core.frame.DataFrame'
'''

# Plot DJI
DJI.plot()
plt.show()

このチャートを作成します。

ここに画像の説明を入力

シリーズの開始から終了までの毎年の読み取りと読み取りが 1 回だけになるように、メジャー ユニットを設定するにはどうすればよいですか?

MultipleLocator および FormatStrFormatter 関数を使用している可能性がありますか? しかし、それは日付でどのように機能しますか? 時系列の長さはさまざまです。

4

2 に答える 2

2

YearLocatormatplotlib のdatesモジュールから使用できます。

from matplotlib.dates import YearLocator, DateFormatter

...

# YearLocator defaults to a locator at 1st of January every year
plt.gca().xaxis.set_major_locator(YearLocator())

plt.gca().xaxis.set_major_formatter(DateFormatter('%Y'))
于 2013-09-01T20:32:22.280 に答える
2

matplotlib はx 軸に配列を正しくレンダリングしないため、実際に呼び出すplt.plot(または API を使用する) 必要があります。例えば:matplotlibdatetime64

In [18]: s = Series(randn(10), index=date_range('1/1/2001', '1/1/2011', freq='A'))

In [19]: s
Out[19]:
2001-12-31   -1.236
2002-12-31    0.234
2003-12-31   -0.858
2004-12-31   -0.472
2005-12-31    1.186
2006-12-31    1.476
2007-12-31    0.212
2008-12-31    0.854
2009-12-31   -0.697
2010-12-31   -1.241
Freq: A-DEC, dtype: float64

In [22]: ax = s.plot()

In [23]: ax.xaxis.set_major_locator(YearLocator())

In [24]: ax.xaxis.set_major_formatter(DateFormatter('%Y'))

与える

ここに画像の説明を入力

代わりに、次のようにする必要があります。

fig, ax = subplots()
ax.plot(s.index.to_pydatetime(), s.values)
ax.xaxis.set_major_locator(YearLocator())
ax.xaxis.set_major_formatter(DateFormatter('%Y'))
fig.autofmt_xdate()

取得するため:

ここに画像の説明を入力

YearLocator別の年の倍数が必要な場合は、次のように、必要な倍数をコンストラクターに渡します。

fig, ax = subplots()
ax.plot(s.index.to_pydatetime(), s.values)
ax.xaxis.set_major_locator(YearLocator(2))
ax.xaxis.set_major_formatter(DateFormatter('%Y'))
fig.autofmt_xdate()

その結果:

ここに画像の説明を入力

于 2013-09-01T20:39:56.340 に答える