Как сложить несколько гистограмм в одну цифру в Python? - PullRequest
2 голосов
/ 25 января 2020

У меня есть массив numpy с формой [30, 10000], где первая ось является шагом по времени, а вторая содержит значения, наблюдаемые для серии из 10000 переменных. Я хотел бы визуализировать данные в виде одной фигуры, похожей на эту: enter image description here

, которую вы можете найти в руководстве по морскому рожению здесь . По сути, я хотел бы нарисовать гистограмму из 30/40 бинов для каждого из 30 временных шагов, а затем - каким-то образом - объединить эти гистограммы, чтобы они имели общую ось, и построить их на одном рисунке.

Мои данные выглядят как гауссиан, который перемещается и расширяется во времени. Вы можете воспроизвести нечто похожее, используя следующий код:

mean = 0.0
std = 1.0

data = []
for t in range(30):
    mean = mean + 0.01
    std = std + 0.1
    data.append(np.random.normal(loc=mean, scale=std, size=[10000]))

data = np.array(data)

Лучше всего подойдет цифра, подобная изображенной выше, но любая помощь приветствуется!

Спасибо, Г.

1 Ответ

3 голосов
/ 25 января 2020

Использовать гистограмму? Вы можете сделать это с помощью np.hist2d, но этот способ немного понятнее ...

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(30, 10000)

H = np.zeros((30, 40))
bins = np.linspace(-3, 3, 41)
for i in range(30):
    H[i, :], _ = np.histogram(data[i, :], bins)
fig, ax = plt.subplots()
times = np.arange(30) * 0.1
pc = ax.pcolormesh(bins, times, H)
ax.set_xlabel('data bins')
ax.set_ylabel('time [s]')
fig.colorbar(pc, label='count')

enter image description here

...