Сделать функцию распределения графиком

Я написал код, который генерирует ряд распределения: введите сюда описание изображения

x_list_repeats = [70,75,75,75,85,95,105,125,125,125,130,130,135,135,135,135,145,145,150,150,150,150,160,165,180]
hist, edges = np.histogram(x_list_repeats, bins=len(x_list_repeats))
Y = hist.cumsum()
for i in range(len(Y)):
    plt.plot([edges[i], edges[i + 1]], [Y[i], Y[i]], c="orange")

Но не могу сделать из него график (пример построил в Excel, для тех же значений)

введите сюда описание изображения


Ответы (2 шт):

Автор решения: A_Vaclav

Вам нужно рассчитать необходимые списки координат (как в экселе). Вот я построил график на примере вашего кода:

import numpy as np
import matplotlib.pyplot as plt

x_list_repeats = [70,75,75,75,85,95,105,125,125,125,130,130,135,
                  135,135,135,145,145,150,150,150,150,160,165,180]
hist, edges = np.histogram(x_list_repeats, bins=len(x_list_repeats))
Y = hist.cumsum()

X_mid = []

for i in range(len(Y)):
    plt.plot([edges[i], edges[i + 1]], [Y[i], Y[i]], c="orange")

    X_mid.append(sum([edges[i], edges[i + 1]]) / 2)

plt.plot(x_list_repeats, Y, c = 'green')
#x_list_repeats - список координат Х,  Y - соответственно У
# c = 'green' - зеленым цветом

plt.plot(X_mid, Y, c = 'red')

введите сюда описание изображения

→ Ссылка
Автор решения: CrazyElf

Если сделать так, чтобы по x и по y было одинаковое кол-во точек для отрисовки, то нет никаких проблем нарисовать сплошной график:

YY = np.hstack((Y, Y[-1:]))
plt.plot(edges, YY, c="orange")

введите сюда описание изображения

→ Ссылка