Python Forum
Animation using matplotlib query
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Animation using matplotlib query
#1
I am trying to animate a plot of two distinct points (blue and orange points) moving about the complex unit circle using Python's Matplotlib library (the type of animation shown here but for only two points on the circle). The problem I am having is that the animation does not remove and update the previous data points but rather sequentially smears it on the unit sphere. Hence the animation is just a sequential smudging of the various data points rather than two distinct points orbiting. I am having difficulty updating the animation to achieve this.

The following is the code where I call 'animation.FuncAnimation' to animate data stored in arrays called 'Aan' and 'Ban'.

##Python Code for Executing Animation##
import matplotlib.animation as animation
import matplotlib.pyplot as plt
import numpy as np
from pylab import *

#Example Data
A = array([0., 0.03435915,  0.06328989, 0.0880305, 0.14199928, 0.2044361, 0.26287941,  0.32484623])
B = array([ 1.75, 1.71564086, 1.69358362, 1.68499179, 1.68255084, 1.67808712, 1.66169597,  1.64407287]) 

# Total time.
T = 1.0
# Number of steps.
NS = 100
# Time step size
dt = T/NS
t = np.linspace(0.0, NS*dt, NS+1)

# So here are a few utility functions for multiplying scalars and vectors.
# a scalar times a vector returns a vector
def scale_vector(scale, vector):
  result = [0]*len(vector)
  for i in range(len(result)):
    result[i] = scale * vector[i]
  return result

# dot product of two vectors = sum(x[0]*y[0] + ... + x[n-1]*y[n-1])
def vector_dot(vector1, vector2):
  result = 0
  for i in range(len(vector1)):
    result += vector1[i] * vector2[i]
  return result

# return real part of a vector
def real_vector(vector):
  return map(lambda x: x.real, vector)

# return imaginary part of a vector
def imag_vector(vector):
  return map(lambda x: x.imag, vector)

## Creating complex unit circle
r = []
im = []
def main():
  # Generate numbers around the complex unit circle.
  N = 128
  theta = scale_vector(2*pi/N, range(N))
  exp_theta = map(lambda x: exp(1j * x), theta)

  real_part = real_vector(exp_theta)
  imag_part = imag_vector(exp_theta)

  r.append(real_part)
  im.append(imag_part)

  # And wait until the user is done with it.
  done = raw_input("done? ")

if __name__ == "__main__":
  main()

#Form two arrays which have the real and imaginary components of the unit circle
r2 = r[0][:]
im2 = im[0][:]

##Code for Animation##
Aan = np.zeros([len(A),2], float)
for i in range(2):
  for j in range(len(A)):
    if i == 0:
      Aan[j][i] = math.cos(A[j])
    elif i == 1:
      Aan[j][i] = math.sin(A[j])
      
Ban = np.zeros([len(B),2], float)
for i in range(2):
  for j in range(len(B)):
    if i == 0:
      Ban[j][i] = math.cos(B[j])
    elif i == 1:
      Ban[j][i] = math.sin(B[j])
    
##Plots and animation
fig = figure()
plt.title('Phase Space')
plt.xlabel('Re')
plt.ylabel('Im')

#Plots complex unit circle
plot1 = plt.plot(r2,im2, color = 'g',alpha = 0.4)

#Animation functions
def animate(i):
     plot(Aan[i, 0], Aan[i, 1], color='blue', marker= 'o') 
     plot(Ban[i, 0], Ban[i, 1], color='orange', marker= 'o') 
     
ani = animation.FuncAnimation(fig, animate, interval=101)

show()
Can anyone advise on how this code could be adapted to resolve this problem?

Thanks.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Matplotlib Animation with Threading peterjv26 4 7,170 Oct-08-2021, 05:51 PM
Last Post: peterjv26
  Matplotlib: How do I convert Dates from Excel to use in Matplotlib JaneTan 1 3,220 Mar-11-2021, 10:52 AM
Last Post: buran
  cannot create animation on 2D array using Matplotlib and FuncAnimation Caffeine_Addict 1 2,489 Jan-12-2021, 11:35 AM
Last Post: Caffeine_Addict
  Show graphs in matplotlib from a sql query? ScaleMan 1 1,855 Feb-06-2020, 05:47 PM
Last Post: ScaleMan
  Changing axis graduation matplotlib 3D animation axerousso 0 2,127 Jan-09-2020, 08:25 PM
Last Post: axerousso
  Matplotlib animation problem Potatoez 1 2,336 May-21-2019, 03:58 PM
Last Post: Potatoez
  Matplotlib 3d voxels animation jasiekkm 0 2,748 Apr-07-2019, 07:44 AM
Last Post: jasiekkm
  Python Beacon positioning and animation with Raspberry pi matplotlib joefreedy 1 2,866 Feb-14-2019, 08:47 PM
Last Post: joefreedy

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020