8

2 つのヒストグラムがあり、hist のパラメーターを使用して不透明度を設定するとします:「alpha=0.5」

2 つのヒストグラムをプロットしましたが、3 つの色が得られました。これは不透明性の観点から理にかなっていることを理解しています。

しかし!3 色の 2 つのもののグラフを誰かに見せると、非常に混乱します。各ビンの最小バーを不透明度なしで前面に設定することはできますか?

グラフの例

ここに画像の説明を入力

4

1 に答える 1

9

この問題を処理する通常の方法は、プロットを少し離すことです。plt.histに複数のデータ セットが与えられた場合、これは既定で行われます。

import pylab as plt

x = 200 + 25*plt.randn(1000)
y = 150 + 25*plt.randn(1000)
n, bins, patches = plt.hist([x, y])

例 1

代わりにどちらをスタックするか (これは引数 を使用して上で行うことができますhisttype='barstacked') が、順序が正しくないことに注意してください。

これは、ポイントの各ペアを個別にチェックしてどちらが大きいかを確認し、 を使用zorderしてどちらが先に来るかを設定することで修正できます。簡単にするために、上記のコードの出力を使用しています (たとえば、n は、x と y の各ビンのポイント数の 2 つの積み重ねられた配列です)。

n_x = n[0]
n_y = n[1]
for i in range(len(n[0])):
    if n_x[i] > n_y[i]:
        zorder=1
    else:
        zorder=0
    plt.bar(bins[:-1][i], n_x[i], width=10)
    plt.bar(bins[:-1][i], n_y[i], width=10, color="g", zorder=zorder)

結果の画像は次のとおりです。 ここに画像の説明を入力

このように順序を変更すると、画像が非常に奇妙に見えます。これがおそらく実装されておらず、ハックが必要な理由です。これらのプロットに慣れている人は誰でも、同じ x 値を取ると想定します。

于 2013-08-27T13:11:01.277 に答える