スコアの分布セット(score
)を比較し、いくつかのカテゴリ(centrality
)でグループ化し、他のカテゴリ(model
)で色分けします。私はシーボーンで次のことを試しました:
plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")
このプロットにはいくつかの問題があります。
model
値original
は特別です。これは、他のすべての分布をoriginal
の分布と比較する必要があるためです。これは視覚的にプロットに反映されるはずです。 original
をすべてのグループの最初のボックスにできますか?何らかの方法でオフセットまたはマークを付けることはできますか?各original
分布の中央値とボックスのグループを通る水平線を引くことは可能でしょうか?score
の値のいくつかは非常に小さいですが、y軸を適切にスケーリングしてそれらを表示するにはどうすればよいですか?編集:
これは、対数スケールのy軸を持つ例です-これもまだ理想的ではありません。一部のボックスがローエンドで切れているように見えるのはなぜですか?
異常値表示
seaborn.boxplot
に渡すことができる引数をplt.boxplot
に渡すことができるはずです( documentation を参照)。flierprops
を設定することで、外れ値の表示を調整できます。 ここ は、外れ値でできることの例です。
それらを表示したくない場合は、行うことができます
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
showfliers=False)
または、次のように明るい灰色にすることもできます。
flierprops = dict(markerfacecolor='0.75', markersize=5,
linestyle='none')
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
flierprops=flierprops)
グループの順序
hue_order
を使用して、グループの順序を手動で設定できます。
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
hue_order=["original", "Havel..","etc"])
y軸のスケーリング
すべてのy値の最小値と最大値を取得し、それに応じてy_lim
を設定できますか?このようなもの:
y_values = data["scores"].values
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
y_lim=(np.min(y_values),np.max(y_values)))
編集:この最後のポイントは、自動y_lim
範囲にすべての値がすでに含まれているため、実際には意味がありませんが、これらの設定を調整する方法の例として残しています。コメントで述べたように、おそらくログスケーリングはより意味があります。