Проблема заключается в использовании aspect='equal'
, который предотвращает подзаговоры от растяжения до произвольной пропорции и заполнения всего пустого пространства.
Как правило, это будет работать:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
plt.subplots_adjust(wspace=0, hspace=0)
Результат таков:
Однако, с aspect='equal'
, как показано в следующем коде:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
plt.subplots_adjust(wspace=0, hspace=0)
Этот это то, что мы получаем:
Разница во втором случае является то, что вы вынуждены х- и у-оси, чтобы иметь одинаковое количество единиц/пиксел. Так как оси по умолчанию идут от 0 до 1 (т. Е. До того, как вы нарисуете что-либо), использование aspect='equal'
заставляет каждую ось быть квадратом. Поскольку фигура не является квадратом, пипот добавляет дополнительное расстояние между осями по горизонтали.
Чтобы обойти эту проблему, вы можете установить для своей фигуры правильное соотношение сторон.Мы будем использовать объектно-ориентированный интерфейс pyplot здесь, что я считаю, чтобы быть выше в целом:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
fig.subplots_adjust(wspace=0, hspace=0)
Вот результат:
пост ссылку и может быть отредактирована в 'None' не делать то, что вы думаете, это означает«использовать по умолчанию».. – tacaswell
Я попытался добавить числа вместо «Нет», но это не решило пролема. – user3006135
'plt.subplots_adjust (wspace = 0, hspace = 0)' решит вашу проблему, если бы не тот факт, что вы используете «равный» аспект. См. Мой ответ для деталей. – Thucydides411