Если вы хотите, чтобы сумма всех баров была равна единице, вес каждого бункера по общему количеству значений:
weights = np.ones_like(myarray)/float(len(myarray))
plt.hist(myarray, weights=weights)
Надеюсь, что это помогает, хотя поток довольно старый ...
Невозможно активно определить, есть ли зум. Я нашел здесь хорошую запись о том, как вы можете попытаться реализовать это.
Я нашел два способа обнаружения уровень масштабирования. Один из способов обнаружения увеличения изменение уровня зависит от того, что процентные значения не увеличиваются. А процентное значение относительно ширина области просмотра, поэтому на нее не влияют масштаб страницы. Если вы вставите два элемента, один с положением в процентах, и один с таким же положением в пикселей, они разойдутся, когда страница увеличена. Найдите соотношение между позиции обоих элементов и у вас есть уровень масштабирования. Посмотреть тест кейс. http://web.archive.org/web/20080723161031/http://novemberborn.net/javascript/page-zoom-ff3
Вы также можете сделать это с помощью инструментов из вышеупомянутой публикации. Проблема в том, что вы более или менее догадываетесь, увеличилась ли страница или нет. В некоторых браузерах это будет работать лучше, чем в других.
Невозможно определить, увеличена ли страница, если они загружают вашу страницу во время увеличения.
Я использую этот фрагмент JavaScript, чтобы реагировать на "события" Zoom.
Он опрашивает ширину окна.
(Как несколько предложено на этой странице (на которую ссылается Ян Эллиотт): http://novemberborn.net/javascript/page-zoom-ff3 [архив])
Проверено с Chrome, Firefox 3.6 и Opera, но не с IE.
С уважением, Магнус
var zoomListeners = [];
(function(){
// Poll the pixel width of the window; invoke zoom listeners
// if the width has been changed.
var lastWidth = 0;
function pollZoomFireEvent() {
var widthNow = jQuery(window).width();
if (lastWidth == widthNow) return;
lastWidth = widthNow;
// Length changed, user must have zoomed, invoke listeners.
for (i = zoomListeners.length - 1; i >= 0; --i) {
zoomListeners[i]();
}
}
setInterval(pollZoomFireEvent, 100);
})();