Я пытаюсь построить две двумерные гистограммы с одинаковыми пределами оси. Когда я просто рисую оба из них, не пытаясь изменить ни одну из их осей, я получаю это (исключая некоторые стандартные определения параметров данных и форматирование галочки x/y):
def create_hist_plot(params, ax, cbar_ax=None, color=GK_GREEN, bins=80):
result = sns.histplot(
**params,
ax=ax,
kde=True,
bins=bins,
color=color,
)
return result
ax_2 = create_hist_plot(params_1, ax_2, color=GREEN, bins=40)
ax_3 = create_hist_plot(params_2, ax_3, color=PURPLE, bins=40)
Я хочу изменить размер фиолетовой гистограммы, чтобы она имела те же пределы оси, что и зеленая гистограмма. Я пытался вручную установить такие ограничения (ax_3 — фиолетовая гистограмма, ax_2 — зеленая гистограмма)
ax_3.set_ylim(ax_2.get_ylim())
ax_3.set_xlim(ax_2.get_xlim())
что дает мне
но обратите внимание, как бины на фиолетовой гистограмме теперь искажены. Есть ли способ изменить пределы осей гистограммы, не искажая ячейки?
Я добавил соответствующий код. Я указываю размер ячейки 40 для обоих участков.
Вы должны добавить не простое число для bins=
, а пару векторов, один для x
и один для y
. Поскольку неясно, как создаются данные и оси, трудно показать пример. Вектор может быть чем-то вроде np.linspace(min_val, max_val, 40)
, используя одни и те же минимум и максимум для обеих гистограмм.
Это отличный совет! Я немного повозился с тем, что вы сказали, и я получил результаты, которые хотел. Я обновлю свой вопрос, чтобы включить код, который у меня сработал. Если вы хотите поместить свой комментарий в качестве ответа, я отмечу его как принятый. Спасибо!
Бен, пожалуйста, добавьте это как ответ и примите его. Не включайте ответ в вопрос.
Редактирование вашего вопроса для включения ответа считается неуместным. Если у вас есть время, пожалуйста, ① отмените свой вопрос, ② поместите свой ответ там, где он должен быть (т. е. в ответе) и ③, возможно, примите его, чтобы будущие читатели знали, что он сработал для вас.
Я добавил решение в качестве ответа. Я отмечу это как принятый ответ завтра. Спасибо
Основываясь на рекомендации johanc в комментариях, я попробовал следующее и получил желаемый результат.
def create_hist_plot(params, ax, cbar_ax=None, color=GK_GREEN, bins=80):
result = sns.histplot(
**params,
ax=ax,
kde=True,
bins=bins,
color=color,
)
return result
ax_2 = create_hist_plot(params_1, ax_2, color=GREEN, bins=40)
bins = [
np.linspace(ax_2.get_xlim()[0], ax_2.get_xlim()[1], 40),
np.linspace(ax_2.get_ylim()[0], ax_2.get_ylim()[1], 40)
]
ax_3 = create_hist_plot(params_2, ax_3, color=PURPLE, bins=bins)
Результат
Не могли бы вы добавить код для создания двумерных гистограмм? Вероятно, вы можете добавить параметр
bins=
, чтобы использовать одни и те же интервалы в обеих гистограммах.