我使用python-tkinter模塊構建了一個GUI,並使用plt.figure嵌入了matplotlib條形圖! 這裏是我的代碼:滑塊上的垂直彩色線條matplotlib
def graph(self):
f=plt.Figure(figsize=(40,4))
canvas=FigureCanvasTkAgg(f,self.canvas)
canvas.get_tk_widget().pack(side=TOP,fill=BOTH,expand=True)
ax=f.add_subplot(111)
f.subplots_adjust(left=0.00, right=0.99)
self.x=range(1,100) #for example
self.y=[1]*len(self.x)
self.N=10
self.f=f
self.ax=ax
barpos=f.add_axes([0.18, 0.03, 0.55, 0.07], facecolor='white')
slider=Slider(barpos, 'Plot',0,len(self.x)-self.N, valinit=0)
self.slider=slider
slider.on_changed(self.bar)
self.bar(0)
def bar(self,pos):
pos=int(pos)
N=self.N
self.ax.clear()
if pos + N > len(self.x):
n=len(self.x)-pos
else:
n=N
X=self.x[pos:pos+n]
Y=self.y[pos:pos+n]
self.ax.bar(X,Y,width=0.7, align='edge',color='green',alpha=0.07)
self.ax.margins(0.01,0)
for i,txt in enumerate(self.x):
**self.ax.axvline(x= i, color='r')** #*this line if I use it without embedding my plot in tkinter gives me a slider with vertical lines as shown in bottom image but if I use it in my gui code it puts the lines on the bars and not on the slider*
self.ax.annotate(self.fid[i], (self.x[i],0.25),horizontalalignment='right',fontsize=8,color='purple',weight='bold')
#I am annotating a bunch of stuff here
self.ax.axes.xaxis.set_ticks([])
self.ax.axes.yaxis.set_ticks([])
我一次顯示10條,我需要幫助與滑塊產生不同顏色的垂直線。
我能夠在matplotlib中實現此功能,其中我的圖形是在plt.subplots中創建的,而plt.axes用於代替f.add_axes。 任何人都可以幫我複製這是我的tkinter滑塊(使用f.add_axes創建)? 我添加了一個圖像,其中最上面的圖片顯示了我的滑塊如何嵌入tkinter畫布 中,並且最下面的圖片是使用plt.axvline創建的,但是同樣的功能在嵌入canvas中的matplotlib圖形中不起作用。
我想複製垂直線,就像在畫布的嵌入式陰謀的底部滑塊!任何幫助將非常感激!謝謝!
在Tkinter畫布上繪製圖形或繪製圖形沒有區別。事實上,如果您使用Tk後端,通常的繪圖窗口*就是一個tkinter畫布。也就是說,如果您在執行代碼時遇到問題,則需要提供問題的[mcve]。 – ImportanceOfBeingErnest