python matlabplot animate 刷新_matlab动态绘图Animation
主要是查看matlab幫助的Animation動畫頁面
1、函數
播放錄制的電影楨
將軸或圖形捕獲為影片幀
返回與電影幀相關聯的圖像數據
將圖像轉換為電影幀
更新數據并處理回調
指定數據源后刷新圖中的數據
2、官方例子
(1)畫出sin(x)圖像,并且追蹤一個點
%%%創建sinx
x = linspace(0,10,1000);
y = sin(x);
plot(x,y)
hold on
p = plot(x(1),y(1),'o','MarkerFaceColor','red'); %標記第一個點,設置為紅色
hold off
axis manual %將軸限制模式設置為手動,以避免在整個動畫循環中重新計算限制。
%%%使用drawnow動態畫圖
for k = 2:length(x)
p.XData = x(k);
p.YData = y(k);
drawnow
end
(2)畫出sin(x)圖像,追蹤一個點,顯示坐標變換
%%%畫出sin(x)圖像
x = linspace(-6,6,1000);
y = sin(x);
plot(x,y)
axis manual
%%%設置圖片格式
ax = gca;
h = hgtransform('Parent',ax);
hold on
plot(x(1),y(1),'o','Parent',h);
hold off
t = text(x(1),y(1),num2str(y(1)),'Parent',h,...
'VerticalAlignment','top','FontSize',14);
%%%使用drawnow動態畫圖
for k = 2:length(x)
m = makehgtform('translate',x(k)-x(1),y(k)-y(1),0);
h.Matrix = m;
t.String = num2str(y(k));
drawnow
end
(3)這個例子展示了如何通過更新三角形的數據屬性來讓一個三角形在圓的內部循環。繪制圓并設置軸限制,以便在兩個方向上的數據單位是相同的。
%%%繪制
theta = linspace(-pi,pi);
xc = cos(theta);
yc = -sin(theta);
plot(xc,yc);
axis equal
%%%動態顯示
xt = [-1 0 1 -1];
yt = [0 0 0 0];
hold on
t = area(xt,yt); % initial flat triangle
hold off
for j = 1:length(theta)-10
xt(2) = xc(j); % determine new vertex value
yt(2) = yc(j);
t.XData = xt; % update data properties
t.YData = yt;
drawnow limitrate % display updates
end
(4)這個例子展示了如何創建兩條生長線的動畫。animatedline函數可以幫助您優化行動畫。它允許您在不重新定義現有點的情況下向行添加新點。
%創建兩條不同顏色的動畫線。 然后,將點添加到循環中的線上。 在循環之前設置軸極限,以免每次通過循環都重新計算極限。 添加新點后,請使用drawow或drawow limitrate命
%令在屏幕上顯示更新。
a1 = animatedline('Color',[0 .7 .7]);
a2 = animatedline('Color',[0 .5 .5]);
axis([0 20 -1 1])
x = linspace(0,20,10000);
for k = 1:length(x);
% first line
xk = x(k);
ysin = sin(xk);
addpoints(a1,xk,ysin);
% second line
ycos = cos(xk);
addpoints(a2,xk,ycos);
% update screen
drawnow limitrate
end
(5)這些示例展示了如何將動畫記錄為可以重放的電影
%在一個循環中創建一系列的情節,并將每個情節捕獲為一個框架。通過每次在循環中設置軸限制,確保軸限制保持不變。將幀存儲在M中。
for k = 1:16
plot(fft(eye(k+16)))
axis([-1 1 -1 1])
M(k) = getframe;
end
%使用短片功能播放短片五次。
figure
movie(M,5)
%捕獲電影的整個人物在圖的左側包括一個滑塊。 通過將圖形指定為getframe函數的輸入參數來捕獲整個圖形窗口
figure
u = uicontrol('Style','slider','Position',[10 50 20 340],...
'Min',1,'Max',16,'Value',1);
for k = 1:16
plot(fft(eye(k+16)))
axis([-1 1 -1 1])
u.Value = k;
M(k) = getframe(gcf);
end
%把電影回放五遍。電影在當前軸中回放。創建一個新的圖形和一個軸來填充圖形窗口,使電影看起來像原來的動畫。
figure
axes('Position',[0 0 1 1])
movie(M,5)
(6)創建流粒子動畫,流粒子動畫對于可視化矢量場的流向和速度很有用。 “粒子”(由任何線標記表示)跟蹤沿特定流線的流量。 動畫中每個粒子的速度與沿流線任意給定點的矢量場的大小成比例。
%1.指定數據范圍的起點
%本示例通過指定適當的起點來確定要繪制的體積區域。 在這種情況下,流圖從x = 100開始,y在z = 5平面中跨越20到50,這不是完整的體積邊界
load wind
[sx sy sz] = meshgrid(100,20:2:50,5);
%2.創建流線以指示粒子路徑
%本示例使用流線(stream3,streamline)跟蹤動畫粒子的路徑,從而為動畫添加了可視背景。
verts = stream3(x,y,z,u,v,w,sx,sy,sz);
sl = streamline(verts);
%3.定義視圖
%盡管所有流線均始于z = 5平面,但某些流的值逐漸降低到較低的值。 以下設置提供了動畫的清晰視圖:選定的視點(視圖)顯示了包含最多流線的平面和螺旋線。
%選擇[2 2 0.125]的數據縱橫比(daspect)可在z方向上提供更高的分辨率,以使流粒子更容易在螺旋形中看到。設置軸限制以匹配數據限制(軸)并繪制軸框(框)。
view(-10.5,18)
daspect([2 2 0.125])
axis tight;
set(gca,'BoxStyle','full','Box','on')
%4.計算流粒子頂點
%確定沿流線繪制粒子的頂點。 interpstreamspeed函數根據流線頂點和矢量數據的速度返回此數據。 本示例將速度縮放0.05,以增加插值頂點的數量。
%將軸SortMethod屬性設置為childorder,以便動畫運行更快。
%streamparticles函數設置以下屬性:
%設置為10動畫,以運行10次動畫。啟用“ ParticleAlignment”以一起開始所有粒子軌跡。將MarkerEdgeColor設置為none可僅繪制圓形標記的面。 當未繪制標記邊緣時,動畫通常運行得更快。
%MarkerFaceColor為紅色。o的標記,繪制一個圓形標記。 您也可以使用其他線標記。
iverts = interpstreamspeed(x,y,z,u,v,w,verts,0.01);
set(gca,'SortMethod','childorder');
streamparticles(iverts,15,...
'Animate',10,...
'ParticleAlignment','on',...
'MarkerEdgeColor','none',...
'MarkerFaceColor','red',...
'Marker','o');
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python matlabplot animate 刷新_matlab动态绘图Animation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts热力背景图_Echarts
- 下一篇: 文件按m3u8顺序合并_在线视频下载之m