अजगर 3.9 के साथ मैक पर ओएस 11.6.1
मैं उपयोग कर रहा हूँ, खिलाड़ी वर्ग में परिभाषित किया गया प्रबंध गतिशील साजिश रचने में matplotlib एनीमेशन मॉड्यूल डिजाइन करने के लिए एक समारोह है, जो बनाता है एक एनीमेशन पर रखा जाएगा कि एक tkinter कैनवास में निहित एक उच्चस्तरीय खिड़की. प्रत्येक फ्रेम के एनीमेशन के होते हैं, एक हीटमैप प्रदर्शित होने के ऊपर एक बार इसी साजिश है । एक colorbar प्रकट होता है अगले करने के लिए हीटमैप. हीटमैप अक्ष लेबल तार कर रहे हैं में संग्रहीत चैनल है ।
मेरे यहाँ के समारोह, जहां जड़ है मेरी मुख्य tkinter विंडो में, अक्ष लेबल्स में संग्रहित कर रहे हैं channels
, M_list
की एक सूची है matrices, और bar_list
है की एक सूची सूचीबद्ध करता है, जहां प्रत्येक सूची में bar_list
लंबाई बराबर करने के लिए चैनलों की संख्या और bar_list
ही लंबाई की संख्या के बराबर matrices.
def heatplot_barplot_animation_combined(root,channels,M_list,bar_list):
num_times=len(M_list)-1
fig, ax = plt.subplots(2)
plot_window = Toplevel(root)
canvas = FigureCanvasTkAgg(fig, master=plot_window)
canvas.draw()
canvas.get_tk_widget().pack(side=TOP,fill=BOTH,expand=1)
def update_graph(i):
ax[0].cla
cbar_ax.cla()
sns.heatmap(ax = ax[0], data = M_list[i], cmap = "coolwarm", cbar_ax =
cbar_ax,vmin=0,vmax=1)
ax[0].set_xticks(range(len(channels)))
ax[0].set_xticklabels(channels,fontsize=10)
ax[0].set_yticks(range(len(channels)))
ax[0].set_yticklabels(channels,fontsize=10)
ax[1].cla()
ax[1].bar(channels,bar_list[i])
ax[1].set_ylim(0, 1)
fig.suptitle('Frame: '+str(i), fontsize=12)
divider = make_axes_locatable(ax[0])
cbar_ax = divider.append_axes("right", size="5%", pad=0.05)
ani = Player(fig, update_graph, maxi=num_times)
नमूना कार्यान्वयन के लिए 50 8 से 8 matrices:
channels=['a','b','c','d','e','f','g','i']
Nc=len(channels)
Nt=50
M_list=[np.random.rand(Nc,Nc) for i in range(Nt)]
bar_list=[[random.uniform(0,1) for i in range(Nc)] for t in range(Nt)]
heatplot_barplot_animation_combined(root,channels,M_list,bar_list)
अक्ष लेबल रहे हैं सही ढंग से, लेकिन लेबल झिलमिलाहट में एक कष्टप्रद तरीके से एनीमेशन के रूप में बाहर निभाता है.
दूसरे हाथ पर, मैं स्थानांतरित अगर चार लाइनों, जहां मैं सेट के लेबल ax[0]
(हीटमैप) के बाहर अद्यतन समारोह और तुरंत यह नीचे, जिसके परिणामस्वरूप एनीमेशन करता है, झिलमिलाहट नहीं है, लेकिन हीटमैप अक्ष लेबल रहे हैं नंबर 0,1,...,7 और न प्रविष्टियों में चैनल.
तो, मैं संघर्ष कर रहा हूँ करने के लिए कुल्हाड़ियों लेबल सही ढंग से और खत्म करने के लिए चंचल ।