2014-12-08 5 views
-1

저는 인터넷 검색을 많이 해왔지만 해결책을 찾지 못했습니다. 문제는 다음과 같습니다. Moving matplotlib legend outside of the axis makes it cutoff by the figure box 하지만 그림을 저장하고 싶지는 않습니다. 전체 그림 안에 전설이 있기를 원합니다. 나는 또한 tight_layout 시도했지만 그 작동하지 않았다. 나는 matplotlib에 완전히 익숙하지 않아 그것을 이해할 수 없다. 다음은 내 소스 코드입니다 (Pyplt4에 matplot를 임베드했습니다) :PyQt4 및 matplotlib : 플롯 외부의 범례가 잘립니다.

class GraphACanvas(FigureCanvas): 
    def __init__(self, parent=None, width=5, height=5, dpi=100):   
     self.fig = Figure(figsize=(width, height), facecolor=backColorHexName, dpi=dpi) 
     self.axes = self.fig.add_subplot(1, 1, 1, autoscale_on=False) 

     self.axes.set_xticks(arange(-0.1, 1.4, 0.1)) 
     self.axes.set_yticks(arange(-0.1, 1.4, 0.1)) 

     FigureCanvas.__init__(self, self.fig) 
     self.setParent(parent) 

     FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding, Gui.QSizePolicy.Expanding) 
     FigureCanvas.updateGeometry(self) 

def computeFigure(self): 
    col = [] 
    for i in xrange(0, 100): 
     x = i/100 
     y = y/100 
     line, = self.axes.plot(x, y, 'o', color=blue, label='label') 
     col.append(line.get_c()) 

    self.axes.set_xlabel('x', labelpad=10, rotation=0) 
    self.axes.set_ylabel('y', labelpad=10, rotation=0) 

    leg = self.axes.legend(loc=2, bbox_to_anchor=(1.0, 0.5), borderaxespad=0., fontsize='x-small', framealpha=0.25, markerscale=0.5, ncol=1, numpoints=1) 

    for color,text in zip(col,leg.get_texts()): 
     text.set_color(color) 

test = GraphACanvas() 
test.computeFigure() 

여기에 단지 더미 값을 넣었습니다. 그러나이 응용 프로그램에서 사용자는 노드를 선택할 수 있으며 노드 수를 선택하면 더 크거나 더 작은 노드가 범례입니다. 내가 전설에 대한 더 많은 장소를 가지고 X 축 측면을 축소하고 싶습니다. -> 내 그림에 충분한 공간이 있으므로 그림에서 100 % (너비/높이) 대신 100 % 높이와 80 % 너비를 채우지 않아야합니다.

답변

0

이 줄 :

self.axes = self.fig.add_subplot(1, 1, 1, autoscale_on=False)

(자세한 이하) 당신이 설명하는대로 전체 그림을 채우고 축이 만들어집니다.

보십시오 그 목록

self.axes = self.fig.add_axes([0.1, 0.1, 0.7, 0.8])

요소는 모든 값은 전체 치수도 분획이다

[left_edge, bottom_edge, width, height].

+0

Thx : D 시도해 보겠습니다. 또한 해결책을 찾았습니다 : figure.subplot_adjust (right = 0.2). – ProgrammingIsAwsome