Использование функции Hist для построения серии одномерных гистограмм в 3D-графике Python - PullRequest
3 голосов
/ 17 мая 2011

Я использую функцию гистонов pythons для генерации 1d гистограмм, каждая из которых связана с данным экспериментом.Теперь я понимаю, что функция Hist позволяет построить несколько гистограмм на одной оси x для сравнения.Для этой цели я обычно использую что-то похожее на следующее, и в результате получается очень хороший график, где x1, x2 и x3 определены следующим образом: x1 = длины expt1 x2 = длины expt2 x3 = длины expt3

P.figure()
n, bins, patches = P.hist( [x0,x1,x2], 10, weights=[w0, w1, w2], histtype='bar')
P.show()

Однако я надеялся достичь эффекта 3d и поэтому спрашиваю, знает ли кто-нибудь, можно ли сместить каждую уникальную гистограмму относительно другой на плоскости y на заданную единицу, создавая, таким образом, эффект 3d.

Буду признателен за любую помощь в этом.

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Полагаю, вы просто хотите matplotlib.pyplot.bar3d.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x0, x1, x2 = [np.random.normal(loc=loc, size=100) for loc in [1, 2, 3]]

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

yspacing = 1
for i, measurement in enumerate([x0, x1, x2]):
    hist, bin_edges = np.histogram(measurement, bins=10)
    dx = np.diff(bin_edges)
    dy = np.ones_like(hist)
    y = i * (1 + yspacing) * np.ones_like(hist)
    z = np.zeros_like(hist)
    ax.bar3d(bin_edges[:-1], y, z, dx, dy, hist, color='b', 
            zsort='average', alpha=0.5)

plt.show()

enter image description here

0 голосов
/ 17 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...