logo

Python'da Grafik Çizme | 3'lü ayarla

Python'da Grafik Çizme | Set 1 Python'da Grafik Çizme | 2'yi ayarla Matplotlib oldukça kapsamlı bir kütüphanedir. Animasyonlar grafiklerden de. Animasyon araçları, matplotlib.animasyon Animasyon işlevselliğinin etrafında oluşturulduğu bir çerçeve sağlayan temel sınıf. Ana arayüzler şunlardır Zamanlı Animasyon Ve FuncAnimasyon ve ikisinin dışında FuncAnimasyon kullanımı en uygun olanıdır. Kurulum:
    Matplotlib: Bakınız Python'da Grafik Çizme | Set 1 Numpy: You can install numpy module using following pip command:
    pip install numpy
    FFMPEG: Yalnızca animasyonu video olarak kaydetmek için gereklidir. Yürütülebilir dosya şuradan indirilebilir: Burada .
Uygulama: Python
# importing required modules import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np # create a figure axis and plot element fig = plt.figure() ax = plt.axes(xlim=(-50 50) ylim=(-50 50)) line = ax.plot([] [] lw=2) # initialization function def init(): # creating an empty plot/frame line.set_data([] []) return line # lists to store x and y axis points xdata ydata = [] [] # animation function def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted x = t*np.sin(t) y = t*np.cos(t) # appending new points to x y axes points list xdata.append(x) ydata.append(y) # set/update the x and y axes data line.set_data(xdata ydata) # return line object return line # setting a title for the plot plt.title('A growing coil!') # hiding the axis details plt.axis('off') # call the animator  anim = animation.FuncAnimation(fig animate init_func=init frames=500 interval=20 blit=True) # save the animation as mp4 video file anim.save('animated_coil.mp4' writer = 'ffmpeg' fps = 30) # show the plot plt.show() 
Here is how the output animation looks like: Now let us try to understand the code in pieces:
  • fig = plt.figure() ax = plt.axes(xlim=(-50 50) ylim=(-50 50)) line = ax.plot([] [] lw=2)
    Here we first create a figure i.e a top level container for all our subplots. Then we create an axes element balta bir alt olay örgüsü görevi görüyor. Eksen elemanı oluşturulurken x ve y ekseni için aralık/sınır da tanımlanır. Son olarak şunu oluşturuyoruz: komplo olarak adlandırılan eleman astar . Başlangıçta x ve y eksen noktaları boş listeler ve çizgi genişliği olarak tanımlandı. (lw) 2 olarak belirlendi.
  • def init(): line.set_data([] []) return line
    Now we declare a initialization function sıcaklık . Bu işlev animatör tarafından ilk kareyi oluşturmak için çağrılır.
  • def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted x = t*np.sin(t) y = t*np.cos(t) # appending new points to x y axes points list xdata.append(x) ydata.append(y) # set/update the x and y axes data line.set_data(xdata ydata) # return line object return line
    This is the most important function of above program. canlandır() işlev, her kareyi oluşturmak için animatör tarafından tekrar tekrar çağrılır. Bu fonksiyonun kaç kez çağrılacağı, aktarılan çerçevelerin sayısına göre belirlenir. çerçeveler animatörle tartışma. canlandır() function takes the index of ith frame as argument.
    t = 0.1*i
    Here we cleverly use the index of current frame as a parameter!
    x = t*np.sin(t) y = t*np.cos(t)
    Now since we have the parameter T we can easily plot any parametric equation. For example here we are plotting a spiral using its parametric equation.
    line.set_data(xdata ydata) return line
    Finally we use set_data() x ve y verilerini ayarlama ve ardından çizim nesnesini döndürme işlevi astar .
  • anim = animation.FuncAnimation(fig animate init_func=init frames=500 interval=20 blit=True)
    Now we create the FuncAnimation object altı . Aşağıda açıklanan çeşitli argümanları gerektirir: incir : çizilecek şekil. canlandırmak : her kare için tekrar tekrar çağrılacak işlev . başlangıç_işlevi : Net bir çerçeve çizmek için kullanılan işlev. İlk kareden önce bir kez çağrılır. çerçeveler : çerçeve sayısı. (Not: çerçeveler yinelenebilir veya oluşturucu da olabilir.) aralık : kareler arasındaki süre (milisaniye cinsinden) kalmak : blit=True ayarı yalnızca değişen parçaların çizileceği anlamına gelir.
  • anim.save('animated_coil.mp4' writer = 'ffmpeg' fps = 30)
    Now we save the animator object as a video file using kaydetmek() işlev. Animasyon videosunu kaydetmek için bir film yazıcısına ihtiyacınız olacak. Bu örnekte FFMPEG film yazıcısını kullandık. Bu yüzden yazar 'ffmpeg' olarak ayarlanmıştır. fps saniye başına kare anlamına gelir.
Örnek 2 This example shows how one can make a rotating curve by applying some simple mathematics! Python
# importing required modules import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np # create a figure axis and plot element fig = plt.figure() ax = plt.axes(xlim=(-25 25) ylim=(-25 25)) line = ax.plot([] [] lw=2) # initialization function def init(): # creating an empty plot/frame line.set_data([] []) return line # set of points for a star (could be any curve) p = np.arange(0 4*np.pi 0.1) x = 12*np.cos(p) + 8*np.cos(1.5*p) y = 12*np.sin(p) - 8*np.sin(1.5*p) # animation function def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted X = x*np.cos(t) - y*np.sin(t) Y = y*np.cos(t) + x*np.sin(t) # set/update the x and y axes data line.set_data(X Y) # return line object return line # setting a title for the plot plt.title('A rotating star!') # hiding the axis details plt.axis('off') # call the animator  anim = animation.FuncAnimation(fig animate init_func=init frames=100 interval=100 blit=True) # save the animation as mp4 video file anim.save('basic_animation.mp4' writer = 'ffmpeg' fps = 10) # show the plot plt.show() 
Here is how the output of above program looks like: Here we have used some simple mathematics to rotate a given curve.
  • Yıldız şekli k = 2,5 ve 0 konularak elde edilirp = np.arange(0 4*np.pi 0.1) x = 12*np.cos(p) + 8*np.cos(1.5*p) y = 12*np.sin(p) - 8*np.sin(1.5*p)
  • Now in each frame we rotate the star curve using concept of rotation in complex numbers. Let x y be two ordinates. Then after rotation by angle theta the new ordinates are: {x}' = xcos theta - ysin theta {y}' = xsin theta + ycos theta The same has been applied here:
    X = x*np.cos(t) - y*np.sin(t) Y = y*np.cos(t) + x*np.sin(t)
Sonuç olarak, animasyonlar muhteşem şeyler yaratmak için harika bir araçtır ve bunlar kullanılarak çok daha fazla şey yaratılabilir. Matplotlib kullanılarak animasyonlu grafikler bu şekilde oluşturulabilir ve kaydedilebilir. Test Oluştur