построение 3d гистограммы / гистограммы в python matplotlib - PullRequest
5 голосов
/ 30 марта 2011

У меня есть матрица Nx3 в scipy / numpy, и я хотел бы сделать из нее трехмерную гистограмму, где оси X и Y определяются значениями первого и второго столбцов матрицы, высотой каждого столбца - третий столбец в матрице, а количество столбцов определяется по N.

Другими словами, если «data» является матрицей, то:

data[:, 0] # values of X-axis
data[:, 1] # values of Y-axis
data[:, 2] # values of each Z-axis bar

и должен быть один столбец для каждого len (data)

Как я могу сделать это в Matplotlib?

Во-вторых, как вариант этого, как я могу сделать то же самое, но на этот раз гистограмма столбцов в N бинов в каждом измерении X, Y, Z? То есть вместо столбца для каждой точки просто гистограммируйте данные в эти ячейки в каждом измерении и строите столбец для каждого ячейки.

большое спасибо за вашу помощь.

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Вот один пример трехмерного гистограммы. Вот еще один .

Numpy имеет функцию под названием histogram2d , чтобы выполнить желаемое прямоугольное объединение.

1 голос
/ 05 января 2016

Мне было немного трудно правильно определить «высоту» моих данных из примеров, но в конце концов я начал работать со следующим кодом. Здесь Z - это трехмерный массив со всеми моими данными, а x и rval - это в основном двумерные индексы, соответствующие точкам данных.

xs = np.arange(biopsy_num)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for y in (np.arange(r_sweep)):
    z = Z[:,y]
    ax.bar(xs, z, zs=y, zdir='y', alpha=0.8)

ax.set_xlabel('biopsies')
ax.set_ylabel('radius of biopsy')
ax.set_zlabel('Shannon Index')

plt.show()
...