답변:
다음 코드 줄을 추가해야합니다.
ax = gca()
ax.legend_ = None
draw()
gca ()는 현재 좌표축 핸들을 반환하며 그 속성은 legend_입니다.
draw()
에 의해 show()
. 또는 사용시 특별한 이점이 draw
있습니까?
show()
그래프 업데이트가 프로그램의 마지막 명령 인 경우 정상입니다. draw()
일반적인 그래프 업데이트 명령이므로 괜찮습니다. 예를 들어, 그래프를 업데이트 한 후 사용자에게 터미널에서 입력을 요청하는 메시지를 표시 할 수 있습니다 show()
. 이는 차단으로 수행 할 수 없습니다 .
draw
더 적절 하다는 데 동의합니다 (그러나 항상 show
그래프를 업데이트 하는 데 사용 했습니다 ...).
fig와 ax plot 객체를 사용하지 않는다면 다음과 같이 할 수 있습니다 :
import matplotlib.pyplot as plt
# do plot specifics
plt.legend('')
plt.show()
축이 아닌 그림에 추가하여 범례를 만들었습니다 (matplotlib 2.2.2). 그것을 제거하기 legends
위해 그림 의 속성을 빈 목록으로 설정했습니다.
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax1.plot(range(10), range(10, 20), label='line 1')
ax2.plot(range(10), range(30, 20, -1), label='line 2')
fig.legend()
fig.legends = []
plt.show()
@naitsirhc의 정보에 따르면 공식 API 설명서를 찾고 싶었습니다. 여기에 내가 찾은 것과 샘플 코드가 있습니다.
matplotlib.Axes
객체를 만들었습니다.seaborn.scatterplot()
.ax.get_legend()
반환matplotlib.legned.Legend
인스턴스를..remove()
함수를 호출 하여 플롯에서 범례를 제거합니다.ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()
matplotlib.legned.Legend
API 문서 를 확인 하면 .remove()
기능 이 표시되지 않습니다 .
그 이유는 matplotlib.legned.Legend
상속 된 것 matplotlib.artist.Artist
입니다. 따라서 ax.get_legend().remove()
기본적으로 호출하면 matplotlib.artist.Artist.remove()
.
결국 코드를 두 줄로 단순화 할 수도 있습니다.
ax = sns.scatterplot(......)
ax.get_legend().remove()
ax.get_legend().remove()
솔루션은 작동하지 않지만 두 번째 솔루션 (legend = ax.legend() ... legend.remove()
)은 작동했습니다. 아마도 내 경우에ax
있었을AxesSubplot
까요?