如何在保持图形的同时更改轴(限制),以便我可以在该图上绘制一些其他数据进行分析?

时间:2011-06-27 10:41:13

标签: matlab

我一直试图通过传统的逃逸速度法将朱莉娅设定为图像,然后在同一条曲线上绘制一个点,看看它们如何变为无穷大,从而看到朱莉娅中的一个点的轨迹。 0或跳舞。

现在的问题是,当我将julia设置为图像时,轴会变为0到300而我的复数是-1 + -1i到1 + 1i所以当我绘制我不能看到它们时我想要的方式。

作为一个整体,我希望当我绘制一个图形时,我可以提取该图形并将其粘贴到新轴上,然后可以在其上绘制新数据。

我想以某种方式将轴更改为新轴,同时保持图形不会发生任何变化..

这是matlab代码,我一直在搞乱..

figure;
hold on;
N =100
zMax = 1;
c = 0; %= 0.285+0.01i;
% julia
MAT=300;
mat=linspace(-zMax,zMax,MAT);
[MATx,MATy]=meshgrid(mat,mat);
Z=zeros(MAT,MAT);
M=zeros(MAT,MAT);
Z=MATx+i*MATy;
for k=1:MAT
    for j=1:MAT
        M(k,j)=escapeVelocity(Z(k,j),c,N);
    end
end
imagesc(atan(0.1*M));
axis xy;
xlabel('Re(z)'); ylabel('Im(z)');
colorbar;
%Now the main probelm exist. Whenever I try to plot Z it plots according to
%previous image axis which is from 0 to 300.
Z0 = 0 + 1i;
Z=Z0;
for n= 1:N
    plot ((Z,'*','LineWidth',4);
    Z = Z^2 + c;
    pause
end

2 个答案:

答案 0 :(得分:1)

哦,我想我明白了。你的意思是这样的:

figure;
N =100
zMax = 1;
c = 0; %= 0.285+0.01i;
% julia
MAT=300;
mat=linspace(-zMax,zMax,MAT);
[MATx,MATy]=meshgrid(mat,mat);
Z=zeros(MAT,MAT);
M=zeros(MAT,MAT);
Z=MATx+i*MATy;
for k=1:MAT
    for j=1:MAT
        M(k,j)=escapeVelocity(Z(k,j),c,N);
    end
end
a1 = axes;
imagesc(atan(0.1*M));
axis xy;
xlabel('Re(z)'); ylabel('Im(z)');
colorbar;
% get first axes on screen and settled
drawnow;
% create a 2nd axes on top of it
a2=axes('Position',get(a1,'Position'),'Visible','off');
hold on
Z0 = 0 + 1i;
Z=Z0;
h = plot(Z,'*','LineWidth',4,'Parent',a2);
for n= 1:N
    Z = Z^2 + c;
    set(h,'XData',real(Z),'YData',imag(Z));
    pause    
end

基本思想是创建一个位于同一位置的第二个轴(位置属性),但没有任何装饰(Visible ='off'),然后绘制到第二个轴。你需要那个画面,因为颜色条会抖动第一个轴的位置。您想要绘制它以确保在将位置复制到第二个轴之前确定位置。

这是你的意思吗?

答案 1 :(得分:0)

plot命令清除轴,创建一个线对象,并返回该对象的句柄。做你想做的最简单,最有效的方法就是简单地重用它创建的对象。这看起来像这样:

for n = 1:N
    if n==1
        h=plot(Z,'*','LineWidth',4);
    else
        set(h,'XData',real(Z),'YData',imag(Z));
    end
    Z = Z^2 + c;
    pause;
end