plt.hist()を使用したヒストグラムプロット

私はPython初心者であり、-0.2〜0.2の値のリストをプロットしたいと考えています。リストは次のようになります

[...-0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01489985147131656, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088...and so on]. 

統計では、データをクラスにグループ化して、ヒストグラムの有用なプロットを取得することを学びました。データ。

Pythonのクラスをプロットに追加するにはどうすればよいですか?

私のコードは

plt.hist(data) 

およびヒストグラムは ここに画像の説明を入力

のようになりますが、

mg src = “https://i.stack.imgur.com/k5rwR.png” alt = “ここに画像の説明を入力してください” title = “単なる例-スケールが異なります!”>

コメント

  • これは不明です。データをグループ化する方法、またはグループ化されたデータをプロットする方法を求めていますか?
  • @ Stephen Rauch:plt.hist()または別の方法でデータをグループ化するように求めています。データをグループ化した後、プロットを実現したいと思います。@メディア:plt.hist(cum_returns_10_5、bins = range(min (cum_returns_10_5)、max(cum_returns_10_5)+ binwidth、binwidth))NameError:名前' binwidth 'が定義されていませんplt.hist(data、bins = range(min(data)、max(data)+ binwidth 、ビン幅))ソリューションでエラーが発生します(上記を参照)。
  • この情報を回答に入れないでください。コメントするか、質問を編集するか、またはその両方を行うことができます。
  • コミュニティ@Tomへようこそ、コメントを使用してください。それが機能しない理由は、それらを設定する必要があるためです。これらは説明のための典型的な変数であり、代わりに値を設定する必要があります。
  • ヒント@Mediaをありがとうございます。 @Stephen Rauch:親切にして、プロットできるようにリストに書かれているPythonのデータをグループ化するかどうかについてコメントをいただけますか?ご協力いただきありがとうございます:)

回答

ヒストグラムは有効ですが、ビンが多すぎて便利です。

等間隔のビンを多数必要とする場合は、その数をplt.hist<のbins引数に渡すだけです。 / div>例:

plt.hist(data, bins=10) 

ビンに特定のエッジを持たせたい場合は、これらをリストとして:

plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]) 

最後に、auto(使用可能なメソッドは numpy.histogram_bin_edges のドキュメントで指定されています):

plt.hist(data, bins="auto") 

完全なコードサンプル

import matplotlib.pyplot as plt import numpy as np # fix the random state for reproducibility np.random.seed(19680801); # sum of 2 normal distributions n = 500; data = 10 * np.random.randn(n) + 20 * np.random.randn(n) + 20; # plot histograms with various bins fig, axs = plt.subplots(1, 3, sharey=True, tight_layout=True, figsize=(9,3)); axs[0].hist(data, bins=10); axs[1].hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]); axs[2].hist(data, bins="auto"); 

ここに画像の説明を入力してください

回答

ビンのサイズを指定する必要があります、もし私が “v eは質問を理解しました。述べたように、ここ

ビンの境界を含むリストを指定できます。

plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100]) 

均等に分散させたい場合は、範囲を使用できます:

plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth)) 

こちらこちらをご覧ください。

コメント

  • 均等に分散させたい場合は、もっと簡単な方法があります。引数としてビンの境界を指定する代わりに、matplotlibに必要なビンの数を指定するだけです。 plt.hist(data, bins=20)
  • @Xavierご回答ありがとうございます。回答を送信してください。お気づきかもしれませんが、質問はまだ閉じられていません:)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です