4

たくさんの線があるmatplotlibにプロットがあります。したがって、かなり広範囲にわたる凡例があり、次のコードを使用してプロットの横に配置しました。

fontP = FontProperties()
fontP.set_size('small')
plt.legend(variablelist, loc=0, prop = fontP, bbox_to_anchor=(1.0, 1.0))
plt.savefig(filename+'.png')

結果は次のとおりです。 ここに画像の説明を入力してください

ただし、ご覧のとおり、凡例は右側で切り取られています。凡例全体を表示できるように、画像の右側にさらにスペースを作成する方法はありますか?

すべてのヒントは大歓迎です!

@mmgpに応えて、私は以下のコードを投稿しました。彼の答えからわかるように、私bbox_inches='tight'はsavefigの部分に追加するのを忘れていました。したがって、将来の読者が完全に機能するコードを使用bbox_inches='tight'できるように、以下のコードにを追加しました。これにより、完全に機能するようになります。.:):

from random import random
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

mylist = []
for a in range(10):
    mylist.append([])
    for b in range(10):
        mylist[a].append(random())
        
x = range(len(mylist))
for enum, i in enumerate(mylist):
    plt.plot(x, mylist[enum], label='label_'+str(enum))

plt.grid(b=True)
fontP = FontProperties()
fontP.set_size('small')

variablesList = []
for i in range(10):
    variablesList.append('label_'+str(i))

legenda = plt.legend(variablesList, loc=0, prop = fontP, bbox_to_anchor=(1.0, 1.0))
plt.savefig('testplot.png', bbox_extra_artists=[legenda], bbox_inches='tight')
4

1 に答える 1

7

savefig:に新しいパラメーターを追加するだけですbbox_inches = 'tight'。これにより、matplotlib はプロットに必要なサイズを把握できます。

于 2012-12-09T13:37:39.553 に答える