web-dev-qa-db-ja.com

Matplotlibボックスプロットチラシが表示されない

Matplotlibのボックスプロットチラシが表示されない問題が発生したのではないでしょうか。

この例を文字通りここにpython script: http://blog.bharatbhole.com/creating-boxplots-with-matplotlib/ に貼り付けました

...しかし、箱ひげ図のチラシ(外れ値)は表示されません。なぜ私がそれらを見ないかもしれないのか誰か知っていますか?これがばかげた質問である場合は申し訳ありませんが、なぜそれが機能しないのかを私の人生で理解することはできません。

## Create data
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)

## combine these different collections into a list    
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]

# Create a figure instance
fig = plt.figure(1, figsize=(9, 6))

# Create an axes instance
ax = fig.add_subplot(111)

# Create the boxplot
bp = ax.boxplot(data_to_plot)

私も追加してみましたshowfliers=Trueをそのスクリプトの最終行に追加しましたが、まだ機能していません。

これは私が出力として得るものです:

enter image description here

17
maths_student15

プロットの外観から、 seaborn モジュールをインポートしたようです。 issue があり、チラシが明示的に有効化されている場合でも、seabornのインポート時にmatplotlib boxplotチラシが表示されません。 seabornがインポートされていない場合、コードは正常に動作しているようです:

Boxplot with fliers, no seaborn

Seabornをインポートすると、次のことができます。

ソリューション1:

次のようにseabornをインポートしたとします。

_import seaborn as sns_

あなたはseaborn boxplot関数を使うことができます:

sns.boxplot(data_to_plot, ax=ax)

その結果:

Seaborn boxplot with fliers

ソリューション2:

Matplotlib boxplot関数を使い続けたい場合(boxplotsの Automatic(whisker-sensitive)ylim in boxplots から):

ax.boxplot(data_to_plot, sym='k.')

その結果:

Matplotlib boxplot with fliers

35
Puggie

チラシマーカーがNoneに設定されている場合、チラシが表示されないことがあります。 リンクしたページ にはfor flier in bp['fliers']:ループ。フライヤーマーカーのスタイル、色、アルファを設定します。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)

## combine these different collections into a list    
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]

# Create a figure instance
fig = plt.figure(1, figsize=(9, 6))

# Create an axes instance
ax = fig.add_subplot(111)

# Create the boxplot
bp = ax.boxplot(data_to_plot, showfliers=True)

for flier in bp['fliers']:
    flier.set(marker='o', color='#e7298a', alpha=0.5)

plt.show()

収量

enter image description here

2
unutbu