2011-12-29 3 views
2

: 나는에 문제가 있어요하기 matplotlib 투명 채우기 내가하기 matplotlib 사용하여 캔버스에 이미지 위에 투명한 다각형을 그리려고 노력하고

def update_figure(self, dataOverride = None): 
    if self.data is not None or dataOverride is not none: 
     FigureCanvas.updateGeometry(self) 
     self.axes.clear() 
     if dataOverride is not None: 
      self.axes.imshow(dataOverride, cmap = self.getColorMap()) 
     else: 
      self.axes.imshow(self.data, cmap = self.getColorMap()) 
    self.draw() 

코드 :

캔버스 클래스

코드

def renderPoly(self, pointListX, pointListY): 

    #Adds in picture to self.ui.canvas2.axes 
    self.ui.canvas2.update_figure() 

    #Code that draws polygon with len(pointListX) points 
    #with the points at pointListX and pointListY over the 
    #current image in self.ui.canvas2.update_figure() 

그래서 주석을 self.ui.canvas2.axes에있는 imshow()의 그림 위에 반투명 한 다각형을 넣을 수있는 것으로 바꾸고 싶습니다.

제안 사항 tylerthemiler

감사합니다,

+0

하나는 대개 여기에 질문에 '감사합니다, Tylerthemiler'라고 쓰지 않습니다. 이것은 포럼과는 조금 다릅니다. 아이디어는이 질문들이 시간의 시험을 견뎌야하고 다른 누군가가 길을가는 것과 같아야한다는 것입니다. – Yann

+1

귀하의 질문은 멋지게 펼쳐져 있으며, 귀하의 노력과 문제가있는 곳에 대한 아이디어를 제공합니다. 그러나 당신은 지금까지 시도한 것을 설명하지 않았습니다. 어떤 종류의 오류가 발생합니까? 어떤 폴리곤 예제를 시도 했습니까? 예제를 시도하지 않고 간단한 (Google) 검색으로 찾을 수없는 경우 다음과 같이 알려주십시오. 축에 폴리곤을 추가하는 좋은 예제를 찾을 수 없습니다. 그러면 답안 작성자가 함께 일할 모범이 없다는 것을 알게 될 것입니다. – Yann

답변

7

나는 완전히 (완전히 동작하는 예제를 제공하시기 바랍니다) 코드를 이해하지 않지만, 다음 코드는 imshow 이미지를 통해 다각형을두고 :

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.patches import Polygon 

data = np.random.rand(4, 4) 
plt.imshow(data) 

pointListX = (0, 2, 1) 
pointListY = (0, 1, 3) 
xyList = list(zip(pointListX, pointListY)) # `list` not necessary for python2 
p = Polygon(xyList, alpha=0.2) 
plt.gca().add_artist(p) 

plt.show() 

스태킹에 문제가있는 경우 zorder 매개 변수를 명시 적으로 설정할 수도 있습니다.

+0

'다각형'단위가 데이터 단위 여야한다는 것을 추가하는 것이 중요하다고 생각합니다. 즉, 임의의 데이터가 각 축에서 0에서 3까지 이동하므로이 값은 다각형의 값 범위입니다. – Yann

+0

또한이 특정 문제에서'zip'은'pointListX'와'pointListY' 배열의 폴리곤에 필요한 Nx2 배열을 만드는 데 사용됩니다. – Yann

+0

솔루션에'zip' 명령을 추가했습니다. 고마워요 @ 얀! –

관련 문제