
前提
pythonでヒストグラムを作成する方法としてplt.hist(), np.histogram()
の二つを試してみたときに
この記事を見つけました.
そこでの回答に関して分からないことがあったのでお聞きしたいです。
stack overflowでの質問
python
1a1, b1, _ = plt.hist(df['y'], bins='auto') 2a2, b2 = np.histogram(df['y'], bins='auto') 3 4print(a1 == a2) 5print(b1 == b2)
で各ツールを用いて得られる値が同じということを確認した上でそれぞれを出力しようとしたがうまくいかなかった.
なぜうまくいかないのかを教えてほしい.
python
1#きちんと表示された例 2plt.hist(df['y'], bins='auto') 3plt.show()
python
1#空のヒストグラムが生成された例 2a2, b2 = np.histogram(df['y'], bins='auto') 3plt.hist(a2, bins=b2) 4plt.show()
stack overflowでの回答
plt.hist
が,カウントを値として含む配列とカウントする値を含む配列を区別できると仮定しているが実際はできない.
つまりplt.hist()
はcounts
をカウントしてしまうのでnp.histogram()
で得られたデータを渡すことができない.
だから以下のようにすればきちんと表示されるよ.
python
1f, ax = plt.subplots(1) 2arr = np.random.normal(10, 3, size=1000) 3cnts, bins = np.histogram(arr, bins='auto') 4ax.hist(cnts, bins=bins)
以上のやり取りに関する私の質問
1
plt.hist
が,カウントを値として含む配列とカウントする値を含む配列を区別できると仮定しているが実際はできない.
これはどういうことなのか.
2
回答にて示されているコードはうまくいっているようだがやっていることは
plt.hist()
→ax.hist()
となっているだけであるがなぜこれで直接データを渡してはいけないという問題を解決できるのか.
以上2点よろしくお願いします.
回答1件
あなたの回答
tips
プレビュー