2013-07-28 5 views
2

큰 그림 세트와 일부 회귀선을 pyplot에 플로팅합니다. 데이터는 추가 값에 따라 색상이 지정됩니다. 전설의 기둥 수를 2로 설정하기로 결정했습니다.pyplot : 범례 내에서 ncols 변경

데이터 포인트는 좋지만 회귀 분석에서는 ncols = 1로 돌아가고 싶습니다. 한 범례 내에서이 작업을 수행 할 수 있습니까? 하기 matplotlib에서

(I, 나는이 전설을 선언 할 수 알지만 이러한 문제가 발생하지 않도록하고 싶습니다 ...)

+1

내가 무엇을 요구하는지 잘 모르겠다. 당신은 Part 2 컬럼, Part 1 컬럼 인 전설이 필요합니까? – tacaswell

+0

정확히. 레이블 중 일부는 매우 짧습니다. 즉, 한 자리 만 표시하고 일부는 훨씬 길게 표시됩니다. – Tyrax

+1

단일 범례로는 90 %를 확신 할 수 없습니다. – tacaswell

답변

3

전설 OffsetBox의 모음입니다. 원칙적으로 이러한 오프셋 상자를 수동으로 재배치하여 범례 내에서 "ncol"을 변경할 수 있습니다. 물론 이것은 matplotlib 내부에 대한 지식이 필요하며 일반 사용자에게는 어려울 것입니다. 이것을 폭로하는 최선의 방법이 무엇인지 확신 할 수 없습니다. 다음은 두 개의 범례를 만들고 하나의 범례로 결합하는 간단한 코드입니다.

import matplotlib.pyplot as plt 
import matplotlib.legend as mlegend 

ax = plt.subplot(111) 
l1, = ax.plot([1,2,3]) 

leg1 = ax.legend([l1], ["long lable"], ncol=1) 

leg2 = mlegend.Legend(ax, [l1, l1, l1, l1], tuple("1234"), ncol=2) 

leg1._legend_box._children.append(leg2._legend_box._children[1]) 
leg1._legend_box.align="left" # the default layout is 'center' 

plt.show() 
+1

우수합니다. 이것은 내가 마음에있는 것에 매우 가깝습니다. 고마워. – Tyrax