2

matplotlib / numpyを使用して多くの変数の累積プロットを行う簡単な方法はありますか?

このようなグラフを考えていますhttp://atlassian.wpengine.netdna-cdn.com/jira/cumulative-flow-diagram.png

たとえば、私はデータを持っておりa=[0,3,6]b=[0,3,4]これはカウントプロットになるはず [(0, a=1, b=1), (3, a=2, b=2), (4, a=2, b=3), (6, a=3, b=3)]です。したがって、ビニングはありませんが、すべてのx値は、特定の変数のカウントがこの値を下回るポイントを取得します。aとbの値は互いに積み重ねる必要があります。

複雑なインターレース前処理をbisectで実装する方法は想像できますが、簡単な解決策はわかりません。

助言がありますか?

編集:累積カウントの別の説明:x値を持つ複数のデータ行があります。例a=[0,3,6]、、、b=[0,3,4]_c=[1, 7]

データ行ごとにグラフが必要です。プロットのx座標の可能な値は、すべてのデータ行の値の和集合です。ここ[0,1,3,4,6,7]に。

これらの合計x値のそれぞれについて、特定の行のy値は、そのデータの値のうちx座標より下にある値の数になります。したがって、x座標については、、、をx=[0,1,3,4,6,7]取得ya=[1,1,2,2,3,3]します。そしてもちろん、私は積み重ねられたプロットを使用します:)yb=[1,1,2,3,3,3]yc=[0,1,1,1,1,2]

4

1 に答える 1

2

リンクで言及したタイプのプロットは、で実現できますstackplot。たとえば、ギャラリーの次の例を参照してください:http: //matplotlib.org/examples/pylab_examples/stackplot_demo.html

サンプルデータの意味は、私にはすべて明確ではありません。あなたが持っているデータとあなたが取得したいもののより精巧な例を挙げていただけますか?

編集:非常に単純なアプローチ:

>>> a=[0,3,6]
>>> b=[0,3,4]
>>> c=[1, 7]
>>> 
>>> x = [0,1,3,4,6,7]
>>> 
>>> ya = []
>>> 
>>> val = 0
>>> for i in x:
...     if i in a:
...         val += 1
...         ya.append(val)
...     else:
...         ya.append(val)
... 
>>> ya
[1, 1, 2, 2, 3, 3]

しかし、おそらくもっと効率的な方法があるでしょう。分析にnumpyまたはpandasを使用していますか?またはプレーンリストで?

于 2012-11-28T15:32:44.593 に答える