Избегайте совпадений между заголовком рисунка и заголовком оси - PullRequest
1 голос
/ 14 марта 2019

EDIT

Я наконец-то решил проблему, оказалось, что это была ошибка функции SciView в PyCharm, но сохранение изображения, как предложено @Bazingaa, и добавление любого из решений, т. Е. constrained_layout или tight_layout, решило его. для меня так что вопрос можно закрыть. Спасибо всем за помощь:)

ВОПРОС

Я знаю, что этот вопрос задавался ранее, как здесь и здесь . Однако по какой-то причине ни одно из предложенных решений не помогло мне до сих пор.

У меня есть фигура с двумя подсюжетами, у каждого из которых есть собственное название, и у фигуры тоже есть название. Проблема в том, что заголовок рисунка перекрывается с заголовками осей.

Вот пример кода:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 2, figsize=(8, 3))
# fig, ax = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)

data = np.random.normal(0, 1, 100)

fig.suptitle('Comparison of distribution in different pieces')

ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
           edgecolor='k')

ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
           edgecolor='k')

plt.tight_layout()
plt.show()

Как видите, я уже использую plt.tight_layout(), и я попытался увеличить верхнее поле с помощью plt.adjust_subplots(), а также установил параметр constrained_layout на рисунке True, но я получаю точно то же самое image Независимо от того, как я изменяю параметры этих функций или даже без вызова одной из них.

Вот выходное изображение .

Кроме того, любые советы или исправления в отношении этого кода приветствуются, так как я все еще новичок с matplotlib.

P.S. Спасибо @Bazingaa за предоставленную мне возможность использовать его код в качестве примера для моей проблемы.

Ответы [ 3 ]

2 голосов
/ 14 марта 2019

Вы можете указать y-местоположение для основного заголовка (suptitle), используя ключевое слово y. Ниже приведен пример ответа.

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 2, figsize=(8, 3))  # specify figsize later

data = np.random.normal(0, 1, 100)

fig.suptitle('Comparison of distribution in different pieces', y=1.05)

ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
           edgecolor='k')

ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
           edgecolor='k')

plt.tight_layout()
plt.show()

enter image description here

0 голосов
/ 14 марта 2019

РЕДАКТИРОВАТЬ: Ой, извините, не читал ваше обновление.

Это работает для меня:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)

data = np.random.normal(0, 1, 100)
fig.suptitle('Comparison of distribution in different pieces')


ax[0].set_title('Original distributions')
ax[0].hist(x=data, density=True,
           edgecolor='k')

ax[1].set_title('Standardized distribution')
ax[1].hist(x=data, density=True,
           edgecolor='k')

plt.show()

suptitle

0 голосов
/ 14 марта 2019

Вы можете уменьшить пространство, используемое tight_layout() для подзаговоров в верхней части, с помощью ключевого слова rect, например ::

plt.tight_layout(rect=[0, 0, 0, .95])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...