2017-03-19 5 views
0

저는 tkinter 창에 그래프를 그리기 위해 matplotlib 모듈을 사용하고 있습니다. AxesSubplot 개체를 사용하여 그래프의 스타일을 구성하고 있습니다.AxesSubplot 객체 (matplotlib & tkinter)를 사용하여 곡선 아래에 색상 추가하기

내 질문은 :이 개체 (AxesSubPlot 개체)와 함께 그래프의 곡선 아래에 색을 그릴 방법은 무엇입니까?

물론
def graph_handle(self): 

    canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(self.__fig, master=self.__SettingsFrame) 
    canvas.show() 
    canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True) 

    self.__axes = self.__fig.add_subplot(1,1,1,axisbg='#221E1E') 
    self.__axes.plot([0]) 
    self.__axes.spines['bottom'].set_color('black') 
    self.__axes.spines['top'].set_color('white') 
    self.__axes.spines['left'].set_color('#221E1E') 
    self.__axes.spines['right'].set_color('#221E1E') 
    self.__axes.xaxis.label.set_color('#221E1E') 
    self.__axes.tick_params(axis='x', colors='black') 
    self.__axes.tick_params(axis='y', colors='#221E1E') 

    self.__fig.gca().clear() 
    self.__fig.gca().plot([0], [0]) 
    self.__fig.canvas.draw() 

내가 코드 및 기타 물건의 Tkinter의 설정이, 당신이 관련이 생각하는 경우에, 코멘트와 나는이 적어 : 이것은 내가 구성하고 그래프를 그리는 데 사용하는 코드입니다 추가 할게.

감사합니다.

편집 : (그냥 데모의 나쁜 도면 죄송합니다) 내가 (곡선과 아래로 축 사이) 곡선 아래에 색상을 추가 할 : 는 지금까지의 코드는이 그래프를 제공합니다 : enter image description here

Edit2가이 :

이 I가 플롯 어레이가 업데이트 될 때마다 호출 함수 (즉, 더 많은 값이 그 전에 플롯 배열이 있기 때문에 I이 그래프를 갱신 할 때) :

def update_plot(self, txnamount): 

    self.__GraphPlot[0].append(self.__TransactionsCurrently) 
    self.__GraphPlot[1].append(self.__WalletBalance+txnamount) 

    self.__axes.fill_between(self.__GraphPlot[0], self.__GraphPlot[1], facecolor="yellow") 

    self.__fig.gca().clear() 
    self.__fig.gca().plot(self.__GraphPlot[0], self.__GraphPlot[1], color="white", linewidth=0.8) 
    self.__fig.canvas.draw() 

답변

0

Axes.fill_between을 사용해야합니다. matplotlib page에 좋은 예가 있습니다.

는이 경우

xy
self.__axes.fill_between(x,y, facecolor='yellow') 

플롯 할 수있는 배열이다 사용하십시오.

+0

작동하지 않습니다. 나는이 함수를 같은 함수에 추가했고 아무 일도 일어나지 않았다. (x, y는 프로그램의 위치 목록이고, 나는 여러분이했던 것처럼 함수에 넣으려고했다. 또한 시도했다 : np.asarray (x), np.asarray (y) 그리고 아직도 아무 일도 일어나지 않았다). 나는 또한 플롯을 업데이트하는 함수에이 줄을 넣으려고 시도했지만 여전히 아무 일도 일어나지 않았다. (위의 내 질문에, 문제가 있는지 확인하기 위해 그래프를 업데이트 배열로 업데이트하는 기능을 추가 할 것이다.) –

+0

축으로 플로팅 한 후에'axes.clear()'를 호출하는 것은 의미가 없습니다. 이렇게하면 새로 추가 된 'fill_between' 플롯이 제거됩니다. – ImportanceOfBeingErnest

+0

맞아, 내가 왜이 줄을 넣었는지 모르겠다 .. 고마워! –