matplotlibで100%スタックエリアチャートを作成する方法を知りました。 matplotlibのページで私はその例を見つけることができませんでした。matplotlibで100%スタックされたエリアチャートを作成
ここで誰かが私にそれを達成する方法を示すことができますか?これを達成するための
matplotlibで100%スタックエリアチャートを作成する方法を知りました。 matplotlibのページで私はその例を見つけることができませんでした。matplotlibで100%スタックされたエリアチャートを作成
ここで誰かが私にそれを達成する方法を示すことができますか?これを達成するための
簡単な方法は、すべてのx値、y値の合計のために100
に私はあなたが例のように配列で編成y値を持っていることを前提としていることを確認することです以下、すなわち
y = np.array([[17, 19, 5, 16, 22, 20, 9, 31, 39, 8],
[46, 18, 37, 27, 29, 6, 5, 23, 22, 5],
[15, 46, 33, 36, 11, 13, 39, 17, 49, 17]])
列の合計が100であることを確認するために、あなたはその列の合計でy
配列を分割する必要があり、その後、100を掛けこれは作り、y値が0から100にまたがるますy軸の「単位」パーセント。 Y軸の値が0から1までの範囲になるようにする場合は、100を掛けないでください。
y値がに設定されていても、上記のように配列、原則は同じです。 y値(例えば、y1
,y2
など)からなる各配列内の対応する要素は、合計100(または1)である必要があります。
以下のコードは、@ LogicalKnightのコメントにリンクされているexampleの修正バージョンです。
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
y = np.row_stack((fnx(), fnx(), fnx()))
x = np.arange(10)
# Make new array consisting of fractions of column-totals,
# using .astype(float) to avoid integer division
percent = y/y.sum(axis=0).astype(float) * 100
fig = plt.figure()
ax = fig.add_subplot(111)
ax.stackplot(x, percent)
ax.set_title('100 % stacked area chart')
ax.set_ylabel('Percent (%)')
ax.margins(0, 0) # Set margins to avoid "whitespace"
plt.show()
これは、次の出力を示します。この[例](http://matplotlib.org/examples/pylab_examples/stackplot_demo.html)について
正当な助けをいただきありがとうございます!私は現在、mpl 1.2.1で少し戦っていて、データを最初にプロットしていますが、この問題をもう一度見る時間がありませんでした。したがって、私はこの素敵なコードを手に入れて本当にうれしいです! 乾杯トーマス –
は、私はちょうど今、自分自身をグラフスタックを製造するため、この方法を試してみた、と例外が、私はstackplot 'トレースバック(最後の最新の呼び出し)を呼び出すようにしようとするたびにスローされます。 ファイル「
@Magic_Matt_Man使用しているPythonとMatplotlibのバージョンは何ですか? – hooy
どのように? –
何か試しましたか?ほとんどの場合、作業コードがあれば、通常はより良い応答が得られます。それが立てば、この質問は「私の仕事をしてください」と読みます。 @LogicalKnightが指し示す例は良いスタートであり、そこへの道のりの95%を得ます。 – tacaswell