Кумулятивная гистограмма для 2D-данных в Python - PullRequest
0 голосов
/ 06 мая 2020

Мои данные состоят из двумерного массива масс и расстояний. Я хочу создать график, где ось x - это расстояние, а ось y - это количество элементов данных с расстоянием <= x (то есть график совокупной гистограммы). Каков наиболее эффективный способ сделать это с помощью Python? </p>

PS: массы не имеют значения, поскольку я уже отфильтровал по массе, поэтому все, что я пытаюсь создать, - это график с использованием данных о расстоянии.

Пример графика ниже:

Example

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Вы можете комбинировать 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()

example plot

В качестве альтернативы, 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

bar plot Вместо добавления значения, например, можно добавить ноль, в зависимости от точной интерпретации данных.

plt.bar(distances, counts.cumsum(), width=-np.diff(distances, prepend=0), align='edge')
0 голосов
/ 06 мая 2020
• 1000 *enter image description here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...