Seaborn: выравнивание 2-х участков на одной оси - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь создать 2 дистоплота, которые перекрываются на одних и тех же осях, но, похоже, они смещены.Как я могу настроить это так, чтобы их перекрытие было точным?Пожалуйста, смотрите ссылку на изображение ниже для проблемы, которую я имею.

plt.figure(figsize=(10,8))
ax1 = sns.distplot(loans['fico'][loans['credit.policy']==1], bins= 10, kde=False, hist_kws=dict(edgecolor='k', lw=1))
ax2 = sns.distplot(loans['fico'][loans['credit.policy']==0], bins= 10, color='Red', kde=False, hist_kws=dict(edgecolor='k', lw=1))

ax1.set_xlim([600, 850])
ax2.set_xlim([600, 850])

Проблемный результат

1 Ответ

0 голосов
/ 15 мая 2018

Сюжеты не выстраиваются в очередь, потому что Seaborn (ну, конечно, Matplotlib за кулисами) разрабатывает лучший способ дать вам десять корзин для каждого набора данных, который вы ему передаете.Но эти два набора могут не иметь одинакового диапазона.

Вы можете указать последовательность в качестве аргумента bin, которая определяет ребра bin.Предполагая, что у вас есть numpy, вы можете использовать функцию linspace, чтобы легко создать эту последовательность из наименьших и самых больших значений в ваших данных.

plt.figure(figsize(10,8))

bins = np.linspace(min(loans['fico']), max(loans['fico']), num=11)

ax1 = sns.distplot(loans['fico'][loans['credit.policy']==1], bins=bins, 
                   kde=False, hist_kws=dict(edgecolor='k', lw=1))
ax2 = sns.distplot(loans['fico'][loans['credit.policy']==0], bins=bins, 
                   color='Red', kde=False, hist_kws=dict(edgecolor='k', lw=1))

И тогда вам не нужно устанавливать ограничения по x.

Пример с некоторыми случайно сгенерированными значениями: enter image description here

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