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

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

matplotlib 中的動畫箭頭

matplotlib 中的動畫箭頭

墨色風雨 2023-08-08 15:56:41
我在 matploltib 中對一行進行了動畫處理,代碼的輸出如下所示:但我想要的是代碼應該繪制一個箭頭(即行尾的箭頭),而不是這一行,這是代碼片段:import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfig, ax = plt.subplots(figsize=(12, 8))ax.set(xlim=(0, 104), ylim=(0, 68))x_start, y_start = (50, 35)x_end, y_end = (90, 45)x = np.linspace(x_start, x_end, 50)y = np.linspace(y_start, y_end, 50)line, = ax.plot(x, y)def animate(i):? ? line.set_data(x[:i], y[:i])? ? return line,ani = animation.FuncAnimation(? ? fig, animate, interval=20, blit=True, save_count=50)plt.show()我應該在代碼中添加/更改什么,以便我可以在輸出中獲得箭頭而不是行?
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

回答

您可以用來ax.arrow繪制箭頭。
請注意,您應該在每次迭代時使用 清除繪圖ax.cla()并調整軸限制ax.set()。

代碼

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation


fig, ax = plt.subplots(figsize=(12, 8))

ax.set(xlim=(0, 104), ylim=(0, 68))


x_start, y_start = (50, 35)

x_end, y_end = (90, 45)


N = 50

x = np.linspace(x_start, x_end, N)

y = np.linspace(y_start, y_end, N)


def animate(i):

? ? ax.cla()

? ? ax.arrow(x_start, y_start,

? ? ? ? ? ? ?x[i] - x_start, y[i] - y_start,

? ? ? ? ? ? ?head_width = 2, head_length = 2, fc = 'black', ec = 'black')

? ? ax.set(xlim = (0, 104), ylim = (0, 68))


ani = animation.FuncAnimation(fig, animate, interval=20, frames=N, blit=False, save_count=50)


plt.show()


查看完整回答
反對 回復 2023-08-08
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

您只需將線函數更改為箭頭函數即可。但請注意,您首先需要計算箭頭的終點,因為根據文檔,您只能指定長度 dx,dy。通過使用畢達哥拉斯,起點為x[0],y[0],為轉換后的終點。dxdy

我認為你現在可以自己解決這個問題。


查看完整回答
反對 回復 2023-08-08
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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