이 질문에 대답하기 :
전설의 위치가 경우에만 런타임에 결정된다 그림이 그려진다. 또한 bbox_to_anchor가 설정되지 않았으므로 전체 축 ((0,0,1,1)
)이됩니다.
당신이 (그것에 만 닫기) 먼저 윈도우 정도
ax.figure.canvas.draw()
bb = leg.get_window_extent().inverse_transformed(ax.transAxes)
이 그러나 당신에게 정확한 위치를 제공하지 않습니다에게 캔버스를 그릴 다음의 취득 할 수 있습니다. 이제
가능한 솔루션이 전설을 대체, 대신 만 콘텐츠의 업데이트하지 않을 수 있습니다 : 당신은 bbox_to_anchor과의 LOC 매개 변수를 필요, 업데이트가 옵션이 아닌 경우,
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left')
leg.texts[0].set_text("b")
plt.show()
그렇지 않으면 이전 범례 :
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left', bbox_to_anchor=(0.5,0.5))
bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes)
plt.legend(['b'], bbox_to_anchor=bb, loc=leg._loc_real)
plt.show()
모드가 "확장"으로 설정된 경우에도 여전히 실패 할 수 있습니다. 또한 동일한 팬시 상자 매개 변수를 사용하여 새 범례를 만드는 경우에만 정확합니다.
내용을 업데이트하는 것이 좋을 것입니다. 그러나 글꼴, numpoints, scatterpoints, labelspacing, handletextpad, borderaxespad, borderpad, handlelength 및 fancybox 필요한 모든 속성을 업데이트 할 수 있다고 생각하지 않습니다. 나는 이들 중 몇 가지는 창조 할 때 범례 명령을 통해서만 접근 할 수 있다고 생각한다. – mrclary
범례가 고정 된 방법/위치를 결정하는 방법이 있습니까? 예를 들어, 범례의 왼쪽 아래 모서리는 축의 왼쪽 아래 모서리에 고정됩니다. 그렇다면'loc = 'lower left ''를 설정할 수 있습니다 ... – mrclary
답변을 업데이트했습니다. 어쩌면 이것은 당신이 필요로하는 것에 더 가깝습니다. – ImportanceOfBeingErnest