web-dev-qa-db-ja.com

MatplotlibヒストグラムまたはSeaborn distplotsのビンにアウトラインはありません

SeabornとJupyterノートブックを使用していくつかの練習問題を行いながら、distplot()グラフには、ドキュメント内のすべてのサンプルグラフが持っている個々のビンの暗いアウトラインがないことがわかりました。 Pycharmを使用してグラフを作成してみたところ、同じことがわかりました。それは海上の問題だと思って、同じ結果を得るためだけに、matplotlibを使用してhist()チャートをいくつか試しました。

import matplotlib.pyplot as plt
import seaborn as sns
titanic = sns.load_dataset('titanic')
plt.hist(titanic['fare'], bins=30)

次のグラフが得られました。

enter image description here

最後に、plt.hist()関数の 'edgecolor'パラメーターを偶然見つけて、黒に設定するとうまくいきました。残念ながら、seaborn distplot()関数で使用する同様のパラメーターが見つからなかったため、期待どおりのグラフを取得できませんでした。

MatplotlibのrcParamsを変更することを検討しましたが、それについての経験はなく、実行した次のスクリプトは何もしなかったようです。

import matplotlib as mpl

mpl.rcParams['lines.linewidth'] = 1
mpl.rcParams['lines.color'] = 'black'
mpl.rcParams['patch.linewidth'] = 1
mpl.rcParams['patch.edgecolor'] = 'black'
mpl.rcParams['axes.linewidth'] = 1
mpl.rcParams['axes.edgecolor'] = 'black'

変更する値を推測するだけでしたが、グラフを再度実行しても変更はありませんでした。

その後、mpl.rcdefaults()を使用してデフォルト設定に戻ろうとしましたが、再度変更はありませんでした。

Condaを使用してmatplotlibを再インストールしましたが、グラフは同じように見えます。これらのグラフのデフォルトのエッジの色を変更する方法に関するアイデアが不足しています。 Condaビルドを使用して、Python、matplotlib、およびseabornの最新バージョンを実行しています。

28
Colin Lindley

Matplotlib 2.0の更新の一部として、棒グラフのエッジは デフォルトでオフになっています です。ただし、rcParamを使用できます

plt.rcParams["patch.force_edgecolor"] = True

エッジをグローバルにオンにします。

おそらく最も簡単なオプションは、hist_kws引数、

ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))

Matplotlibプロットの場合、edgecolorまたはec引数を直接使用できます。

plt.bar(x,y, edgecolor="k")
plt.hist(x, edgecolor="k")

同様に、pandas plots、

df.plot(kind='hist',edgecolor="k")

完全なシーボーンの例:

import  numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x = np.random.randn(100)
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
plt.show()

enter image description here