Я создал график гистограммы, используя данные из файла, и никаких проблем. Теперь я хотел наложить данные из другого файла в той же гистограмме, поэтому я делаю что-то вроде этого
n,bins,patchs = ax.hist(mydata1,100)
n,bins,patchs = ax.hist(mydata2,100)
но проблема в том, что для каждого интервала отображается только строка с наибольшим значением, а другая скрыта. Интересно, как я мог нарисовать обе гистограммы одновременно разными цветами?
python
matplotlib
plot
histogram
Открой путь
источник
источник
pyplot.hold(True)
перед началом печати, на всякий случай?None
по умолчанию. Если вам нужен такой же дизайн, как показано на графике, вы можете установитьedgecolor
параметр в обоих, например,k
(черный). Процедура похожа на легенду.pyplot.hist([x, y], bins, alpha=0.5, label=['x', 'y'])
.Принятые ответы дают код для гистограммы с перекрывающимися столбцами, но если вы хотите, чтобы каждый столбец был рядом (как я сделал), попробуйте вариант ниже:
Ссылка: http://matplotlib.org/examples/statistics/histogram_demo_multihist.html
РЕДАКТИРОВАТЬ [2018/03/16]: Обновлен, чтобы позволить рисование массивов разных размеров, как предложено @stochastic_zeitgeist
источник
plt.hist
для создания одного PDF-файла для каждой гистограммы? Я загрузил свои данные с помощьюpandas.read_csv
и файл имеет 36 столбцов и 100 строк. Поэтому я хотел бы 100 файлов PDF.x=np.array(df.a)
иy=np.array(df.b.dropna())
это в основном закончилось тем, чтоplt.hist([x, y], weights=[np.ones_like(x)/len(x), np.ones_like(y)/len(y)])
В случае, если у вас разные размеры выборки, может быть трудно сравнить распределения с одной осью Y. Например:
В этом случае вы можете построить два набора данных на разных осях. Для этого вы можете получить данные своей гистограммы с помощью matplotlib, очистить ось, а затем заново нанести ее на две отдельные оси (смещая края корзины таким образом, чтобы они не перекрывались):
источник
В завершение ответа Густаво Безерра :
Если вы хотите, чтобы каждая гистограмма была нормализована (
normed
для mpl <= 2.1 иdensity
для mpl> = 3.1 ), которую вы не можете просто использоватьnormed/density=True
, вам нужно вместо этого установить весовые коэффициенты для каждого значения:Для сравнения точно так же
x
иy
векторы с весами по умолчанию иdensity=True
:источник
Вы должны использовать
bins
из значений, возвращаемыхhist
:источник
Вот простой метод построения двух гистограмм с их столбцами рядом на одном графике, когда данные имеют разные размеры:
источник
Звучит так, как будто вы хотите просто гистограмму:
Кроме того, вы можете использовать подзаговоры.
источник
На случай, если у вас есть pandas (
import pandas as pd
) или вы можете использовать его:источник
Есть одно предупреждение, когда вы хотите построить гистограмму из двумерного массива. Вам нужно поменять 2 оси.
источник
На этот вопрос уже был дан ответ, но я хотел добавить еще один быстрый / простой способ, который может помочь другим посетителям в этом вопросе.
Некоторые полезные примеры здесь для KDE против сравнения гистограмм.
источник
Вдохновленный ответом Соломона, но придерживаясь вопроса, который связан с гистограммой, чистое решение:
Удостоверьтесь, что сначала вычерчиваете более высокое значение, в противном случае вам потребуется установить plt.ylim (0,0,45), чтобы гистограмма более высокого уровня не была обрезана.
источник
Также вариант, который очень похож на ответ Хоакин:
Дает следующий вывод:
источник