#python #matplotlib
#python #matplotlib
Вопрос:
Я использую функцию pythons hist для генерации одномерных гистограмм, каждая из которых связана с данным экспериментом. Теперь я понимаю, что функция Hist позволяет построить несколько гистограмм на одной оси x для сравнения. Обычно я использую для этой цели что-то похожее на следующее, и в результате получается очень хороший график, где x1, x2 и x3 определяются следующим образом x1 = ожидаемая длина 1 x2 = ожидаемая длина 2 x3 = ожидаемая длина 3
P.figure()
n, bins, patches = P.hist( [x0,x1,x2], 10, weights=[w0, w1, w2], histtype='bar')
P.show()
Однако я надеялся попытаться добиться 3D-эффекта, и поэтому я спрашиваю, знает ли кто-нибудь, возможно ли, чтобы каждая уникальная гистограмма была смещена относительно другой в плоскости y на заданную единицу, создавая таким образом 3D-эффект.
Я был бы признателен за любую помощь в этом.
Ответ №1:
Я полагаю, вы просто хотите 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()
Ответ №2:
Вы пробовали это? http://toeholds.wordpress.com/2010/03/26/3d-bar-histogram-in-python
Комментарии:
1. привет, Джей, да, я изучал страницу.
2. однако в руководстве, похоже, полностью игнорируется функциональность hist
3. функция Hist в ее нынешнем виде в python полезна для определения бинирования моих данных.