Как иметь логарифмические ячейки в гистограмме Python - PullRequest
69 голосов
/ 28 июля 2011

Насколько я знаю, опция Log = True в функции гистограммы относится только к оси Y.

P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step')

Мне нужно, чтобы ящики были одинаково разнесены в log10.Есть ли что-то, что может сделать это?

Ответы [ 4 ]

110 голосов
/ 28 июля 2011

используйте logspace () для создания геометрической последовательности и передачи ее параметру bin.И установите шкалу xaxis для логарифмического масштаба.

import pylab as pl
import numpy as np

data = np.random.normal(size=10000)
pl.hist(data, bins=np.logspace(np.log10(0.1),np.log10(1.0), 50))
pl.gca().set_xscale("log")
pl.show()

enter image description here

17 голосов
/ 04 августа 2014

Самый прямой способ - это просто вычислить log10 пределов, вычислить линейно разнесенные ячейки, а затем преобразовать обратно, увеличив степень до 10, как показано ниже:

import pylab as pl
import numpy as np

data = np.random.normal(size=10000)

MIN, MAX = .01, 10.0

pl.figure()
pl.hist(data, bins = 10 ** np.linspace(np.log10(MIN), np.log10(MAX), 50))
pl.gca().set_xscale("log")
pl.show()

log10 spaced bins

9 голосов
/ 21 апреля 2018

Следующий код указывает, как вы можете использовать bins='auto' со шкалой журнала.

import numpy as np
import matplotlib.pyplot as plt

data = 10**np.random.normal(size=500)

_, bins = np.histogram(np.log10(data + 1), bins='auto')
plt.hist(data, bins=10**bins);
plt.gca().set_xscale("log")

chart

0 голосов
/ 26 октября 2016

В дополнение к тому, что было заявлено, выполнение этого и для панелей данных pandas также работает:

some_column_hist = dataframe['some_column'].plot(bins=np.logspace(-2, np.log10(max_value), 100), kind='hist', loglog=True, xlim=(0,max_value))

Я бы предупредил, что может возникнуть проблема с нормализацией бинов.Каждая ячейка больше, чем предыдущая, и поэтому должна быть разделена на размер для нормализации частот перед построением графика, и кажется, что ни мое решение, ни решение HYRY не учитывают это.

Источник: https://arxiv.org/pdf/cond-mat/0412004.pdf

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