#python #python-3.x #matplotlib
#python #python-3.x #matplotlib
Вопрос:
У меня проблема, которая возникает, когда легенда сюжета большая, как вы можете видеть на этом рисунке (когда размер легенды нормальный, все выглядит великолепно):
Это код, который добавляет легенду к сюжету:
for i in range(num_of_batches):
cluster_patch = Line2D([0], [0], marker='o', color='w', label='batch ' str(i 1),
markerfacecolor=cmap(i), alpha=0.2, markersize=8)
clusters_patches.append(cluster_patch)
# Create the user groups legend
for i in range(num_of_clusters_by_condition_space):
wrapper = textwrap.TextWrapper(width=27)
limited_length_label_list = wrapper.wrap(text=str(list(partition.keys())[i]))
limited_length_label_string = 'n'.join(limited_length_label_list)
cluster_patch = Line2D((0, 0), (0, 0), markeredgecolor='black', markerfacecolor='none', linestyle='',
marker=Utilities.get_smap(i),
markeredgewidth=2, markersize=8,
label=limited_length_label_string)
clusters_patches.append(cluster_patch)
legend = plt.legend(handles=clusters_patches, loc='center left', bbox_to_anchor=(1, 0.5), fontsize=10,
labelspacing=2)
Есть решение этой проблемы?
Комментарии:
1. Усадка, вероятно, вызвана
set_aspect('equal')
или каким-то ее изменением. Вы можете решить проблему, поместив легенду выше или ниже графика, или создав несколько столбцов (напримерplt.legend(...., ncol=5)
). См. Также это руководство .2. Не полный пример, но я бы предположил, что вы каким-то образом используете tight_layout или constrained_layout. Удалите легенду из макета, используя leg.set_in_layout(False)
3. @JodyKlymak Вы правы, я привык
tight_layout
. Когда я попытаюсь использоватьset_in_layout(False)
исчезнувшую легенду, есть ли у вас какие-либо другие предложения?4. Зависит от вашего варианта использования. Вы можете сохранить как
fig.savefig('name.png', bbox_inches='tight')
, и это расширит границы, чтобы включить что угодно. Вы также можете вызвать plot_layout, а затем вручную настроить правую сторону для размещения.5. @JodyKlymak Результат, который я опубликовал здесь, выполняется при использовании
bbox_inches='tight
, есть ли у вас какие-либо другие предложения, как автоматически развернуть график?