import matplotlib
import matplotlib. pyplot as plt
import moviepy. editor as mpy
matplotlib. rcParams[ 'font.family' ] = 'SimHei'
positions = [
( 0 , 0 ) , ( 1 / 4 , 1 / 4 ) , ( 1 / 3 , 1 / 4 ) , ( 1 / 2 , 1 / 4 ) , ( 2 / 3 , 1 / 4 ) ,
( 3 / 4 , 1 / 4 ) , ( 1 , 1 / 4 ) , ( 5 / 4 , 1 / 4 ) , ( 4 / 3 , 1 / 4 ) , ( 3 / 2 , 1 / 4 ) , ( 2 , 0 )
]
radius = 1
text = "人有悲欢离合\n月有阴晴圆缺\n此事古难全\n但愿人长久\n千里共婵娟"
for index, position in enumerate ( positions) :
fig, ax = plt. subplots( )
circle2 = plt. Circle( ( 2 * radius, 0 ) , radius, color= '#E1E19A' , fill= True )
ax. add_artist( circle2)
circle1 = plt. Circle( position, radius, color= 'white' , fill= True )
ax. add_artist( circle1)
ax. set_xlim( - 1 , 3 )
ax. set_ylim( - 1 , 1 )
ax. set_aspect( 'equal' )
ax. axis( 'off' )
ax. text( - 0.8 , 0.5 , text, fontsize= 12 , ha= 'left' , va= 'center' , color= 'black' , wrap= True )
plt. savefig( f'frame_ { index: 03d } .png' , bbox_inches= 'tight' , pad_inches= 0 )
plt. close( fig)
clips = [ ]
for i in range ( len ( positions) ) :
clip = mpy. ImageClip( f'frame_ { i: 03d } .png' ) . set_duration( 0.1 )
clips. append( clip)
video = mpy. concatenate_videoclips( clips, method= 'compose' )
video. write_gif( "circle_animation1.gif" , fps= 10 )
video. write_videofile( "circle_animation_with_text1.mp4" , fps= 10 )