2016-01-30 5 views
11

मैं नीचे दिए गए कोड से एनिमेटेड हिस्टोग्राम बनाने की कोशिश कर रहा हूं। मैं प्रत्येक बार के लिए अलग-अलग हिस्टोग्राम बना सकता हूं, हालांकि मुझे matplotlib.animation फ़ंक्शन के साथ एनिमेटेड परिणाम नहीं मिल सकते हैं या matplotlib tutorial में कोड को अनुकरण करने से नहीं मिल सकते हैं।Matplotlib एनिमेटेड हिस्टोग्राम

import numpy as np 
import matplotlib.pyplot as plt 


betas = [] # some very long list 
entropy = [] # some very long list 

for time in [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 , 3.5, 4.0, 4.5 5.0, 5.5, 6.0, 6.5 , 7.0, 7.5, 8.0 , 8,5 , 9.0, 9.5 , 10.0]: 

    plt.figure('entropy distribution at time %s ' % time)   
    indexbetas = {i for i, j in enumerate(betas) if j == time} 
    desiredentropies = [x for i, x in enumerate(entropy) if i in indexbetas] #the desiredentropies list depends on time 

    n, bins, patches = plt.hist(desiredentropies, 20, alpha=0.75 , label = 'desired entropies') 

plt.xlabel(r"$S_{(\time=%d)}$" % time, fontsize=20) 
plt.ylabel('Frequency of entropies') 


plt.legend() 
plt.grid(True) 
plt.show() 

मैं अपने desiredentropies सूची जो एनीमेशन के लिए time सूची में तत्व पर निर्भर करता है खिला के साथ विशेष रूप से संघर्ष कर रहा हूँ।

+0

ट्यूटोरियल से उदाहरण के लिए मेरे द्वारा काम करने के लिए कुछ सेकंड की आवश्यकता है - पायथन 2.7.11 और 3.4.3/लिनक्स मिंट 17. क्या आपको कंसोल/टर्मिनल/cmd.exe में कोई त्रुटि संदेश मिलता है? – furas

+0

@furas मैंने अपने ओपी में एक संपादन जोड़ा है। मेरी मुख्य समस्या अद्यतित वांछित सूची को खिला रही है, मैं समय परिवर्तन के रूप में एक हिस्टोग्राम बनाना चाहता हूं। नोट: वांछित सूची सूची समय में प्रत्येक तत्व के लिए बदलती है। –

+0

आपको 'एनीमेशन। फनकएनीमेशन' – furas

उत्तर

5

इसे आजमाएं। यह मूल रूप से केवल हिस्टोग्राम को अपडेट करने के लिए FuncAnimation का लाभ उठाता है। अपडेट की गति और उस तरह की चीजों को नियंत्रित करने के लिए उस फ़ंक्शन के विभिन्न पैरामीटर के बारे में अधिक जानने के लिए animation documentation देखें।

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

n = 100 
number_of_frames = 10 
data = np.random.rand(n, number_of_frames) 

def update_hist(num, data): 
    plt.cla() 
    plt.hist(data[num]) 

fig = plt.figure() 
hist = plt.hist(data[0]) 

animation = animation.FuncAnimation(fig, update_hist, number_of_frames, fargs=(data,)) 
plt.show() 

क्या हम यहाँ करने के एक समारोह, update_hist जिसका हिस्टोग्राम को अद्यतन करने और प्रत्येक चरण पर नया डेटा प्रदर्शित हैंडल कहते हैं। हम धुरी को साफ़ करके और फिर प्रदत्त num के साथ हमारे डेटा में अनुक्रमणित करते हैं, जो वर्तमान फ्रेम संख्या है।

+0

मैं अपने नए desiredentropies सूची को अपडेट कैसे करूं के रूप में सूची समय सूची में समय पर अर्थात तत्व निर्भर करता है? –

+0

मैं अपने कोड के साथ फिट करने के लिए संघर्ष कर रहा हूं। –

+0

पूर्णांकों के लिए अपने सूचकांक सामान्य और में अपने 'for' पाश में कोड डाल' –

संबंधित मुद्दे