2

最後にマーカーで強調している折れ線グラフがあります(ここでは大きな赤いひし形で示されています)。

2 つの 2 つの pandas プロット コマンドを使用して作成しています。問題は、予期しない結果が得られることです。データの長さと、赤いひし形のプロットを最初に配置するか 2 番目に配置するかによって、異なる結果が得られます。私が識別できるパターンはないようです。以下に示す正しい/期待される結果

正しい/期待される結果

時々私は得る:

ここに画像の説明を入力

ほとんどの場合、大きなデータセットを使用すると、次の警告が表示されます。

/Users/xxxxx/.virtualenvs/test2/lib/python2.7/site-packages/matplotlib/axes.py:2542: UserWarning: 同一の left==right を設定しようとすると特異な変換が発生します。自動展開。左=15727, 右=15727 + '左=%s, 右=%s') % (左, 右))

警告は、最初に発生したときにのみ表示されます。明らかにパンダは、同じ軸上に異なる x スケールを持つ 2 つの異なるシリーズのプロットをサポートしていませんか?

以下のコードを試してグラフを生成したり、渡して遊んだり、プロットのシリーズまたはデータフレームを使用して、赤いひし形のプロットの順序を逆にすることもできます。データポイントの数を変更することもできます。ここで再現できなかったエラーの 1 つは、赤いひし形が中央にあり、青い線が左にしか移動していないことです。

コード:

plot_with_series = False
reverse_order = False
import pandas as pd
dates = pd.date_range('20101115', periods=800)
df =  pd.DataFrame(randn(len(dates)), index = dates, columns = ['A'])
ds = pd.Series(randn(len(dates)), index = dates)
clf()
if plot_with_series:
    if reverse_order: ds.plot()
    ds.tail(1).plot(style='rD', markersize=20)
    if not reverse_order: ds.plot()
else:
    if reverse_order: df.plot(legend=False)
    df.A.tail(1).plot(style='rD', markersize=20,legend=False)
    if not reverse_order: df.plot(legend=False)

エラー/警告は、IPython 内から、またはコマンド ラインから as スクリプトを実行したときに発生します。pandas の 2 つの最新バージョンでも一定です。アイデアや明らかな問題はありますか?

4

2 に答える 2

3

前の回答に同意しますが、別の方法も追加します。http://pandas.pydata.org/pandas-docs/stable/visualization.htmlのプロットに関する pandas の公式ドキュメントから
採用しました。DataFrame の 2 番目の列を、パディングされた nan 列の最後のポイントのみになるように調整しました。

df['B'] = np.nan 
df['B'][-1] = df.A[-1]   # Just 1 datapoint
plt.figure()
with pd.plot_params.use('x_compat', True):
    df.A.plot(color='b')
    df.B.plot(style='rD', markersize=12)
于 2013-06-13T05:05:44.250 に答える