20

MATLAB のようにウォーターフォール プロットを実行する Python モジュールはありますか? 「numpy ウォーターフォール」、「scipy ウォーターフォール」、および「matplotlib ウォーターフォール」をグーグル検索しましたが、何も見つかりませんでした。

4

4 に答える 4

22

PolyCollectionクラスを使用して、matplotlib でウォーターフォールを実行できます。このクラスを使用してウォーターフォールを実行する方法の詳細については、この特定の例を参照してください。

また、特定の状況 (選択したビュー角度によって異なります) で「視覚的なバグ」が発生する可能性があることを著者が示しているため、このブログ投稿が役立つ場合があります。

以下は、matplotlib で作成されたウォーターフォールの例です (ブログ投稿の画像): (ソース: austringer.net )画像

于 2012-06-27T07:26:22.577 に答える
6

mplot3dを見てください:

# copied from 
# http://matplotlib.sourceforge.net/mpl_examples/mplot3d/wire3d_demo.py

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

plt.show()

http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/tutorial.html#wireframe-plots

Matlabのように良い結果を得る方法がわかりません。


さらに必要な場合は、MayaViもご覧ください: http//mayavi.sourceforge.net/

于 2012-06-26T14:45:45.413 に答える
4

ウィキペディア タイプのウォーターフォール チャートは、次のようにして取得することもできます。

import numpy as np
import pandas as pd

def waterfall(series):
    df = pd.DataFrame({'pos':np.maximum(series,0),'neg':np.minimum(series,0)})
    blank = series.cumsum().shift(1).fillna(0)
    df.plot(kind='bar', stacked=True, bottom=blank, color=['r','b'])
    step = blank.reset_index(drop=True).repeat(3).shift(-1)
    step[1::3] = np.nan
    plt.plot(step.index, step.values,'k')

test = pd.Series(-1 + 2 * np.random.rand(10), index=list('abcdefghij'))
waterfall(test)
于 2014-08-28T12:43:02.443 に答える