2

次のコードを実行すると:

import pandas as pd
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt

#df = pd.DataFrame(np.random.randn(3,1), index=[8,9,10], columns=['test'])
df = pd.DataFrame(np.random.randn(3,1), index=[datetime(2012,8,1),datetime(2012,9,1),datetime(2012,10,1)], columns=['test'])
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax1.invert_xaxis()
ax1.plot(df.index, df['test'])
fig.show()

例外があります:

RuntimeError: MillisecondLocator estimated to generate 5270400 ticks from 2012-08-01 00:00:00+00:00 to 2012-10-01 00:00:00+00:00: exceeds Locator.MAXTICKS* 2 (2000)

「invert_xaxis」コマンドを無効にすると、インデックスが Datetime 以外の値を使用する場合にも問題なく動作します。

順不同の日付インデックスを持つデータフレームをプロットするときに、いくつかの同様のバグが報告されているのを見てきました (例: hereおよびhere )が、これは pandas の以前のバージョンで修正されました。

回避策について何か提案はありますか? 私はmatplotlib 1.2.1とパンダ0.11.0を使用しています

4

2 に答える 2

2

回避策として: plotpandas のメソッドを使用する場合、およびその後に呼び出す場合invert_xaxis:

fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
df.plot(ax=ax1)
ax1.invert_xaxis()
fig.show()

更新: pandas 0.12 (2013 年 7 月) のリリース以降、これは修正されました ( https://github.com/pydata/pandas/pull/3991およびhttps://github.com/pydata/pandas/issues/3990を参照) 。 . したがって、回避策はもう必要ありません。

于 2013-05-09T11:35:08.080 に答える
0

使用してみてください:plt.gca().invert_xaxis()

于 2021-03-16T09:38:21.127 に答える