2017-12-04 12 views
3

일부 데이터를 플롯하기 위해 python 3.6.2 및 matplotlib와 함께 Jupyter-notebook을 사용하고 있습니다. 내 데이터를 플롯하면matplotlib 범례 성능 문제

, 나는 플롯에 범례를 추가 할 (기본적으로 어떤 라인 알고있는) 그러나 plt.legend를 호출하면 플롯 자체로 (거의 많은 시간이 많이 걸립니다

하는 나의 이해에 다만 즉시이어야한다). 문제를 재현

최소 장난감 문제 : 여기

import numpy as np 
import matplotlib.pyplot as plt 

# Toy useless data (one milion x 4) 
my_data = np.random.rand(1000000,4) 

plt.plot(my_data) 
#plt.legend(['A','C','G','T']) 
plt.show() 

데이터는 무작위 쓸모이지만, 내 문제 재현 : 나는 plt.legend 행의 주석을 해제하면 을 실행 거의 두 배의 시간이 소요

왜? 전설이 줄거리를 보지 않아도 4 개의 줄거리가 만들어 졌는지 확인하고 각 줄을 해당 줄에 할당하는 상자를 그립니다.

왜 간단한 전설에는 많은 시간이 걸립니까?

내가 누락 된 항목이 있습니까?

+2

기본적으로 범례는 잠재적 인 범례 상자 안에있는 각 줄의 점 수를 계산해야하는 "최적의"위치에 배치됩니다. 포인트가 많으면 시간이 걸릴 수 있습니다. "최고"이외의 위치를 ​​지정할 때 그리기 속도가 훨씬 빠릅니다. – bnaecker

답변

2

@bnaecker하여 답을, 복제 등이 질문에 대답됩니다 : 기본적으로

, 전설이 각 라인에서 많은 점수 안에 얼마나 계산이 필요합니다 "최고"위치에 배치됩니다 잠재적 인 범례 상자. 포인트가 많으면 시간이 걸릴 수 있습니다. '최고'이외의 위치를 ​​지정할 때 그리기 속도가 훨씬 빠릅니다 (예 : plt.legend(loc=3).

+0

예, 효과가있었습니다. 감사 –