2015-04-18 4 views
1

Я хотел бы создать сложную гистограмму из массивов numpy с записями, которые являются желаемыми высотами бункера.Сложенная гистограмма с высотами бункера, определенными в массиве numpy

Например, я двенадцать бункеров определяется по формуле:

bins = np.linspace(0,120,13) 

И у меня есть несколько Numpy массивы каждый из двенадцати элементов (1 для каждого бина):

hist1 = [1.1,2.2,3.3,4.4,......,hist1[11]] 
hist2 = [9.9,8.8,7.7,6.6,......,hist2[11]] 

Я хотел бы превратитесь в сложную гистограмму. Возможно ли это с помощью matplotlib?

+0

К сожалению, эти примеры не помогают; эти массивы имеют значения, которые сортируются в соответствующем бункере. Мои значения массива _are_ высота бункера. – ddavis

+1

См. Здесь: http://matplotlib.org/examples/pylab_examples/bar_stacked.html –

+0

О, вы можете просто нарисовать прямоугольные патчи прямо, затем - – cphlewis

ответ

1

Параметр весов разрешит это для вас. Положите одну точку данных в каждом ведре, а затем контролировать высоту, указав его вес

import numpy as np 
import matplotlib.pyplot as plt 

bins = np.linspace(0,120,13) 


# my approximation of your example arrays 
hist1 = np.arange(1.1,15, 1.1) 
hist2 = np.arange(15, 1.1, -1.1) 

all_weights = np.vstack([hist1, hist2]).transpose() 
all_data = np.vstack([bins, bins]).transpose() 
num_bins = len(bins) 

plt.hist(x = all_data, bins = num_bins, weights = all_weights, stacked=True, align = 'mid', rwidth = .5) 

Если контейнеры не были равномерно распределены они начинают быть разной толщины, но кроме этого, это должно решить вашу проблему. enter image description here

Смежные вопросы