亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在使用 FuncAnimation 繪圖時點不移動?

為什么在使用 FuncAnimation 繪圖時點不移動?

白衣非少年 2023-03-30 10:08:17
我正在嘗試從頭開始模擬雙星系統中行星的運動。為此,我需要能夠在動畫圖中繪制點。在編寫整個代碼之前,我正在學習使用 pyplot 為情節制作動畫。到目前為止,我還沒有運氣為移動點設置動畫。在查看了幾個教程和文檔之后,我得到了以下內容:import matplotlibfrom matplotlib.animation import FuncAnimationimport matplotlib.pyplot as pltimport numpy as npfig, ax = plt.subplots()ax.set_xlim(0,2)ax.set_ylim(0,2)line, = plt.plot(0,0,'bo')def animation(i):    x=np.linspace(0,2,100)    y=np.linspace(0,1,100)    line.set_data(x[i],y[i],'bo')    return line,FuncAnimation(fig, animation, frames=np.arange(100),interval=10)plt.show()然而,這段代碼的輸出只是 0,0 處的一個點,我不明白我可能做錯了什么。
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

為了使您的示例起作用,您必須更改兩件事:

  1. 從某處存儲返回值FuncAnimation。否則你的動畫會在plt.show().

  2. 如果不想畫線而只想畫點,請plt.plot使用animation

from matplotlib.animation import FuncAnimation

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

ax.set_xlim(0,2)

ax.set_ylim(0,2)

line, = plt.plot(0,0,'bo')

def animation(i):

    x=np.linspace(0,2,100)

    y=np.linspace(0,1,100)

    plt.plot(x[i],y[i],'bo')

    return line,


my_animation=FuncAnimation(fig, animation, frames=np.arange(100),interval=10)

plt.show()

如果你只想在圖表上有一個移動點,你必須設置并從inblit=True返回結果:plot.plotanimation


from matplotlib.animation import FuncAnimation

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

ax.set_xlim(0,2)

ax.set_ylim(0,2)

line, = plt.plot(0,0,'bo')

def animation(i):

  x=np.linspace(0,2,100)

  y=np.linspace(0,1,100)

  return plt.plot(x[i],y[i],'bo')


my_animation=FuncAnimation(

    fig,

    animation,

    frames=np.arange(100),

    interval=10,

    blit=True

)

plt.show()

此外,您可能想擺脫 (0,0) 處的點,并且不想為每個動畫幀計算xand :y


from matplotlib.animation import FuncAnimation

import matplotlib.pyplot as plt

import numpy as np


fig, ax = plt.subplots()


ax.set_xlim(0,2) 

ax.set_ylim(0,2) 


x=np.linspace(0,2,100) 

y=np.linspace(0,1,100) 


def animation(i):

  return plt.plot(x[i], y[i], 'bo')


my_animation=FuncAnimation(

    fig,

    animation,

    frames=np.arange(100),

    interval=10,

    blit=True

)

plt.show()


查看完整回答
反對 回復 2023-03-30
  • 1 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號