Сюжеты перекрываются в матплоте - PullRequest
1 голос
/ 17 марта 2019

Я пытаюсь отобразить 3 изображения (столбца) в виде вспомогательных участков в каждой строке, изображения отображаются, но накладываются друг на друга. Я пытался настроить их вручную, но количество строк в моих подсюжетах зависит от значения «n», поэтому ручная настройка для каждого n невозможна. Я попытался "fig.tight_layout ()", но тщетно.

Есть идеи как это преодолеть ??

    coeffs=coeffs[1:][::-1]

for i,v in enumerate(coeffs,1):
    toWork=[v[0], v[1], v[2]]
    for j,a in enumerate(toWork):
        ax = fig.add_subplot(i, 3, j+1)
        ax.imshow(a, interpolation="nearest", cmap=plt.cm.gray)
        ax.set_title(titles[j]+str(i), fontsize=10)
        ax.set_xticks([])
        ax.set_yticks([])
        # fig.tight_layout()
# plt.subplots_adjust(top=1,bottom=0,left=0.10,right=0.95,hspace=0.1,wspace=100)
plt.subplot_tool()
plt.show()

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Вы можете попробовать plt.tight_layout () Это сгладит вашу фигуру и сделает фигуры аккуратными.

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

Это не совсем понятно из вашего описания. Пожалуйста, предоставьте минимальный проверяемый пример . Однако, судя по вашему коду, вы создаете разное количество строк с переменной i, что, я думаю, не предназначено. Из документов мы можем видеть, как работают подзаговоры

enter image description here

import matplotlib.pyplot as plt
fig = plt.figure()
nrows, ncols = 3, 3 # total of 9 plots
for idx in range(9):
    ax = fig.add_subplot(nrows, ncols, idx + 1)
    ax.text(0.5, 0.5, idx)
fig.show()

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

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