2017-05-04 12 views
0

matplotlibを使用してboxplotを描画します。Matplotlibのボックスプロットのボックスのウィスカー長を明示的に設定します

これは私の現在のフィギュアです: enter image description here

そして、これは図を生成するためのコードです:

pt = plt.boxplot(all_data, sym='+') 
plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0], ['0', '20%', '40%', '60%', '80%', '100%']) 
plt.xticks([y + 1 for y in range(len(all_data))], ['WMC', 'DIT', 'CBO', 'RFC', 'LCOM', 'Ca', 'NPM']) 
mean = [] 

for line in pt['medians']: 
    x, y = line.get_xydata()[1] # top of median line 
    plt.text(x, y, '%.1f' % x, 
     horizontalalignment='center') # draw above, centered 

plt.savefig("boxplot1.pdf") 

箱ひげ図中のボックスは第一、第二と第三四分位(Q1、示し中央値およびQ3)を含む。各ボックスには、ウィスカーとも呼ばれ、デフォルトで1.5 * IQR(四分位範囲)の長さがあります。だから私が探しているのは、デフォルト値を明示的に使用するのではなく、明示的にを上限と下限(またはひげの長さ)を指定した特定の値に設定します。

誰もがこれにいくつかの光を当てることができますか?

+0

Q1とは異なり、7つの異なる範囲を指定できません。または、最初のバーを選択すると、2番目のバーが切り取られます。これは、あなたの望むことですか?質問を更新し、「Q1 +/- 1.5 * IQR」をわかりやすいものに置き換えることができます。 – ImportanceOfBeingErnest

+0

いずれにしても、質問をその2つの部分に分けないで、(1)四分位数を得る、(2)イルミットを設定する、あなたは誰にとってもより困難になります。 [この質問](http:// stackoverflow)と組み合わせて[この質問](http://stackoverflow.com/questions/23461713/obtaining-values-used-in-boxplot-using-python-and-matplotlib)の重複.com/questions/23349626/get-data-of-a-box-plot-matplotlib)。また、[この質問を参照してください(http://stackoverflow.com/questions/32415838/matplotlib-how-do-i-set-ylim-for-a-series-of-plots) – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnestこんにちは、ありがとうあなたの情報。各ボックスには、行があります(デフォルトではQ1 + 1.5 * IQRと同じにする必要があります)。上部にはもう1行、下部にはもう1行あります。だから基本的に私が探しているのは、デフォルト値を使う代わりに、一番上の行と一番下の行を特定の値に明示的に*設定*することです。私はこれを明確にしていますか? – computereasy

答えて

1

ボックスプロットのウィスカーを変更するには、を使用します。

whis:floatとしてフロート、配列、または文字列(デフォルト= 1.5
は、第一および第三四分位数を越えてウィスカの範囲を決定します。換言すれば、IQRが四分位範囲(Q3-Q1)である場合、上のウィスカーは最後のデータまでQ3 + whis*IQRよりも小さく伸びます。同様に、より低いウィスカーは、より大きい第1のデータに拡大する。ウィスカー以外にも、データは異常値とみなされ、個々の点としてプロットされます。ウィスカーに最小値と最大値を強制的に表示させるには、これを不当に高い値に設定します。あるいは、これをパーセンタイルの昇順(例えば、[5, 95])に設定して、ウィスカーをデータの特定のパーセンタイルに設定します。最後に、whisはデータの最小値と最大値にウィスカーを強制する文字列 'range'にすることができます。

関連する問題