<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
FuncAnimation,它的使用要求簡潔且客製化化程度較高。如果想將很多圖片合併為一個動圖,那麼ArtistAnimation是最合適的選擇。
通過反覆呼叫同一函數來製作動畫。
注意:建立FuncAnimation物件後一定要將其賦值給某個變數,否則系統會將其進行垃圾回收。
class matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)
引數:
範例:
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation fig = plt.figure() ax = fig.subplots() t=np.linspace(0,10,100) y=np.sin(t) ax.set_aspect(3) ax.plot(t,y,'--',c='gray') line=ax.plot(t,y,c='C2') def update(i): #幀更新函數 global t #直接參照全域性變數,也可以通過函數的frames或fargs引數傳遞。 t+=0.1 y=np.sin(t) line[0].set_ydata(y) return line ani=FuncAnimation(fig,update,interval=100) #繪製動畫 plt.show() #顯示動畫
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure(figsize=(7, 2), dpi=100) ax = plt.subplot() X = np.linspace(-np.pi, np.pi, 256, endpoint=True) C, S = np.cos(X), np.sin(X) line1, = ax.plot(X, C, marker="o", markevery=[-1], markeredgecolor="white") line2, = ax.plot(X, S, marker="o", markevery=[-1], markeredgecolor="white") def update(frame): line1.set_data(X[:frame], C[:frame]) line2.set_data(X[:frame], S[:frame]) ani = animation.FuncAnimation(fig, update, interval=10) plt.show()
方法 init(fig, func[, frames, init_func, …])
通過呼叫一個固定的Artist物件來製作動畫,例如給定的系列圖片或者matplotlib的繪圖物件.。
class matplotlib.animation.ArtistAnimation(fig, artists, *args, **kwargs)
引數:
範例:
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import ArtistAnimation fig = plt.figure() ax = fig.subplots() arts=[] t=np.linspace(0,np.pi*2,20) for i in range(20): t+=np.pi*2/20 y=np.sin(t) lines=ax.plot(y,'--',c='gray') #繪製一幀圖形 arts.append(lines) #每幀圖形都儲存到列表中 ani=ArtistAnimation(fig,arts,interval=200) #繪製動畫 #ani.save("animate_artists_basic.gif") #儲存動畫 plt.show() #顯示動畫
方法:
__init__(fig, artists, *args, **kwargs)
new_frame_seq()
new_saved_frame_seq()
pause()
resume()
save(filename[, writer, fps, dpi, codec, ...])
引數:
“pillow”:PillowWriter,用pillow庫寫如動畫檔案。
“ffmpeg”:FFMpegWriter,基於ffmpeg庫寫動畫。
“ffmpeg_file”:FFMpegFileWriter,基於檔案的FFMpegWriter,用ffmpeg庫把幀寫入臨時檔案,然後拼接成動畫。
“imagemagick”:ImageMagickWriter,基於管道的動畫GIF。幀通過管道傳輸到ImageMagick並寫入檔案。
“imagemagick_file”:基於檔案的imagemagick寫動畫。
“hmtl”:HTMLWriter,基於javascript html的動畫。
to_html5_video([embed_limit])
embed_limit:動畫檔案大小限制,單位為MB。預設為20MB,超出限制則不建立動畫。 繪製平滑曲線
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4, 5, 6, 7]) y = np.array([100, 50, 25, 12.5, 6.25, 3.125, 1.5625]) plt.plot(x, y) plt.title("Spline Curve") plt.xlabel("X") plt.ylabel("Y") plt.show()
import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import gaussian_filter1d x=np.array([1,2,3,4,5,6,7]) y=np.array([100,50,25,12.5,6.25,3.125,1.5625]) y_smoothed = gaussian_filter1d(y, sigma=5) plt.plot(x, y_smoothed) plt.title("Spline Curve Using the Gaussian Smoothing") plt.xlabel("X") plt.ylabel("Y") plt.show()
import numpy as np from scipy.interpolate import make_interp_spline import matplotlib.pyplot as plt x=np.array([1,2,3,4,5,6,7]) y=np.array([100,50,25,12.5,6.25,3.125,1.5625]) model=make_interp_spline(x, y) xs=np.linspace(1,7,500) ys=model(xs) plt.plot(xs, ys) plt.title("Smooth Spline Curve") plt.xlabel("X") plt.ylabel("Y") plt.show()
它通過使用 scipy.interpolate.make_interp_spline() 首先確定花鍵曲線的係數,繪製出一條平滑的花鍵曲線。我們用給定的資料來估計花樣曲線的係數,然後用係數來確定間隔緊密的 x 值的 y 值,使曲線平滑。繪製曲線需要沿 X 軸 1 到 7 之間間隔相等的 500。
import numpy as np from scipy.interpolate import interp1d import matplotlib.pyplot as plt x=np.array([1,2,3,4,5,6,7]) y=np.array([100,50,25,12.5,6.25,3.125,1.5625]) cubic_interploation_model=interp1d(x,y,kind="cubic") xs=np.linspace(1,7,500) ys=cubic_interploation_model(xs) plt.plot(xs, ys) plt.title("Spline Curve Using Cubic Interpolation") plt.xlabel("X") plt.ylabel("Y") plt.show()
繪製曲線時,需要在 X 軸上 1 和 7 之間取間隔相等的 500 個點。
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation from scipy.interpolate import interp1d fig = plt.figure(figsize=(7, 2), dpi=100) ax = plt.subplot() x = np.array([1, 2, 3, 4, 5, 6, 7]) y = np.array([100, 50, 25, 12.5, 6.25, 3.125, 1.5625]) cubic_interploation_model = interp1d(x, y, kind="cubic") xs = np.linspace(1, 7, 500) ys = cubic_interploation_model(xs) line3 = ax.plot(xs, ys) def update(frame): line3[0].set_data(xs[:frame], ys[:frame]) ani = animation.FuncAnimation(fig, update, interval=10) plt.show()
到此這篇關於Python Matplotlib繪製動圖平滑曲線的文章就介紹到這了,更多相關Python Matplotlib繪製平滑曲線內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45