Matplotlib - पायथन, matplotlib में एक आकृति पर कई छवियों को आकर्षित करने के लिए कैसे

मैं निम्न कोड के साथ (python3 में) एक निरंतर ड्राइंग का प्रभाव देखना चाहता हूं:

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

fg = plt.figure()
ax = fg.add_subplot(1,1,1)
plt.ion()
for d in range(3):
x_data = np.array([])
y_data = np.array([])
#plt.clf()
for t in range(v):
x = t
x_data = np.append(x_data,x)
y = t*d
y_data = np.append(y_data,y)
#ax.lines = ax.plot(x_data,y_data)
plt.plot(x_data,y_data)
#plt.show()
#plt.pause(0.3)
time.sleep(0.3)
plt.show()
plt.close("all")

लेकिन यह हमेशा "t काम नहीं करता है (यह 3 चित्र खींचता है), चाहे मैं कोड (plt.show ()) को लूप में या बाहर रख दूं।"

उत्तर:

जवाब के लिए 0 № 1

कई मुद्दों:

  1. कभी उपयोग न करो time.sleep एक जीयूआई आवेदन में। यह एप्लिकेशन को सोने देगा (= फ्रीज)
  2. अगर उपयोग कर रहे हैं plt.ion() एक फोन करेगा plt.pause() कुछ देरी शुरू करने के लिए।
  3. फोन करने से पहले plt.show(), के माध्यम से इंटरैक्टिव मोड बंद कर रहे हैं plt.ioff() समझ में आता है, अन्यथा लूप के बाद साजिश सीधे गायब हो जाएगी।

पूरा उदाहरण:

import numpy as np
import matplotlib.pyplot as plt

fg = plt.figure()
ax = fg.add_subplot(1,1,1)
plt.ion()
for d in range(3):
x_data = np.array([])
y_data = np.array([])
v=3
for t in range(v):
x = t
x_data = np.append(x_data,x)
y = t*d
y_data = np.append(y_data,y)

plt.plot(x_data,y_data)

plt.pause(0.3)

plt.ioff()
plt.show()

इंटरैक्टिव मोड के बजाय, कोई भी उपयोग कर सकता है FuncAnimation। फिर ऊपर जैसा दिखेगा

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

fg = plt.figure()
ax = fg.add_subplot(1,1,1)

def update(d):
x_data = np.array([])
y_data = np.array([])
v=3
for t in range(v):
x = t
x_data = np.append(x_data,x)
y = t*d
y_data = np.append(y_data,y)

plt.plot(x_data,y_data)

ani = FuncAnimation(fg, update)
plt.show()

संबंधित सवाल
सबसे लोकप्रिय