web-dev-qa-db-ja.com

Seabornで同じプロットに複数のヒストグラムをプロットする方法

Matplotlibを使用すると、1つのプロット(オーバーレイではなく、隣同士)に2つのデータセットを持つヒストグラムを作成できます。

import matplotlib.pyplot as plt
import random

x = [random.randrange(100) for i in range(100)]
y = [random.randrange(100) for i in range(100)]
plt.hist([x, y])
plt.show()

これにより、次のプロットが得られます。

enter image description here

ただし、シーブロンでこれを行おうとすると、

import seaborn as sns
sns.distplot([x, y])

次のエラーが表示されます。

ValueError: color kwarg must have one color per dataset

だから、私はいくつかの色の値を追加しようとします:

sns.distplot([x, y], color=['r', 'b'])

そして、私は同じエラーを受け取ります。 この投稿 をグラフのオーバーレイ方法で見ましたが、これらのヒストグラムをオーバーレイではなく横に並べたいと思います。

docs を見ると、リストのリストを最初の引数「a」として含める方法は指定されていません。

Seabornを使用してこのスタイルのヒストグラムを実現するにはどうすればよいですか?

20
Malonge

私があなたを正しく理解しているなら、あなたはこれを試してみたいかもしれません:

fig, ax = plt.subplots()
for a in [x, y]:
    sns.distplot(a, bins=range(1, 110, 10), ax=ax, kde=False)
ax.set_xlim([0, 100])

次のようなプロットが得られます:

enter image description here

[〜#〜] update [〜#〜]

シーボーンプロット機能ではなく、「シーボーンルック」が必要なようです。このために必要なことは次のとおりです。

import seaborn as sns
plt.hist([x, y], color=['r','b'], alpha=0.5)

生成するもの:

enter image description here

31
Primer