ヒストグラムを使用すると、実際には不必要に重く、不正確になります (ビニングによってデータが曖昧になります)。すべての x 値を並べ替えることができます。各値のインデックスは、より小さい値の数です。この短くて単純なソリューションは次のようになります。
import numpy as np
import matplotlib.pyplot as plt
# Some fake data:
data = np.random.randn(1000)
sorted_data = np.sort(data) # Or data.sort(), if data can be modified
# Cumulative counts:
plt.step(sorted_data, np.arange(sorted_data.size)) # From 0 to the number of data points-1
plt.step(sorted_data[::-1], np.arange(sorted_data.size)) # From the number of data points-1 to 0
plt.show()
さらに、データが離散的な場所にあるため、より適切なプロット スタイルは実際plt.step()
には ではなく です。plt.plot()
結果は次のとおりです。

EnricoGiampieri の回答の出力よりも不規則であることがわかりますが、これは実際のヒストグラムです (おおよそのあいまいなバージョンではなく)。
PS : SebastianRaschka が指摘したように、最後のポイントは理想的には合計カウントを表示する必要があります (合計カウント-1 ではなく)。これは、次の方法で実現できます。
plt.step(np.concatenate([sorted_data, sorted_data[[-1]]]),
np.arange(sorted_data.size+1))
plt.step(np.concatenate([sorted_data[::-1], sorted_data[[0]]]),
np.arange(sorted_data.size+1))
非常に多くのポイントがありdata
、ズームしないと効果が見えませんが、データに数ポイントしか含まれていない場合は、合計数の最後のポイントが重要になります。