Вы можете комбинировать numpy .cumsum () и plt.step () :
import matplotlib.pyplot as plt
import numpy as np
N = 15
distances = np.random.uniform(1, 4, 15).cumsum()
counts = np.random.uniform(0.5, 3, 15)
plt.step(distances, counts.cumsum())
plt.show()
В качестве альтернативы, plt.bar
можно использовать для построения гистограммы, ширина которой определяется разницей между последовательными расстояниями. При желании необходимо добавить дополнительное расстояние, чтобы придать ширину последней полосе.
plt.bar(distances, counts.cumsum(), width=np.diff(distances, append=distances[-1]+1), align='edge')
plt.autoscale(enable=True, axis='x', tight=True) # make x-axis tight
Вместо добавления значения, например, можно добавить ноль, в зависимости от точной интерпретации данных.
plt.bar(distances, counts.cumsum(), width=-np.diff(distances, prepend=0), align='edge')