Matlab 用于多个绘图的pzmap或pzplot颜色控制柄

Matlab 用于多个绘图的pzmap或pzplot颜色控制柄,matlab,plot,colors,Matlab,Plot,Colors,我正在使用pzmap.m或pzplot.m绘制一个系统的闭环极点。我想看到极点和零点的移动,因为我改变了由L描述的变量 该函数没有颜色的直接句柄。在本例中,您可以选择标准颜色,但不能提供自己的颜色。因为我必须在同一个图形上绘制多次,所以我为for循环中的每个迭代创建一个句柄,并使用findobj设置曲线的颜色。要获得颜色,我需要一个颜色条。因此,我使用jet获取图形的颜色分布。但市场规模保持不变,我有一个丑陋的形象 MWE: 如果您运行它,您将看到大小没有改变,并且图形的任意一侧的y轴都标有记号

我正在使用pzmap.mpzplot.m绘制一个系统的闭环极点。我想看到极点和零点的移动,因为我改变了由L描述的变量

该函数没有颜色的直接句柄。在本例中,您可以选择标准颜色,但不能提供自己的颜色。因为我必须在同一个图形上绘制多次,所以我为for循环中的每个迭代创建一个句柄,并使用findobj设置曲线的颜色。要获得颜色,我需要一个颜色条。因此,我使用jet获取图形的颜色分布。但市场规模保持不变,我有一个丑陋的形象

MWE:


如果您运行它,您将看到大小没有改变,并且图形的任意一侧的y轴都标有记号,看起来很疯狂。我想要一个从蓝色到红色的正确色条,颜色分布正确,但多次尝试后无法获得。如果我能减少混乱,那也会有帮助。

代码中有几个问题

  • h=findobj(gcf,'type','point')屏幕上绘制的东西实际上是类型
    “line”
  • 每次迭代,您都会捕获所有点,在删除属性后用clear模糊地修改它们
另外,
h=findobj(gcf,'type','line')
不会返回单个内容,而是返回一组内容,因此您需要对其进行索引以设置属性。我修改过的代码如下所示:

clear;clc
cb=parula(10);
s=tf('s');
L_array=5:5:50;

figure; hold on;
for i=1:length(L_array)
    L=L_array(i);
    G=((58.2+11.7*L)*s^2*25^2+(3996.8 + 815.7*L)*s*25+815.7*25^2)/(s^2*(s^2*25^2+126.9*s*25+(3996.8+1.9*25^2)));
    CL=feedback(G,1);
    pzmap(CL);

end

% lets do this in the end!

% you will have length(L_array)*2 +1 items in h
 h = findobj(gca,'type','line'); 
for jj=2:length(h)
        set(h(jj),'MarkerSize',12,'Color',cb(floor(jj/2),:));
end
grid;

colormap(parula);   % I am using parula, you can use jet, but I discourage it
c=colorbar;


PD:有很多理由不使用
jet
!!请使用感知均匀的彩色地图

我已经运行了你的代码:如果我不理解错了,你只想给“时间”上色,所以每次你画的东西都会有不同的颜色。我在我的计算机(Matlab2014b)中看到的是,行
h=findobj(…
实际上没有效果,这就是你的问题。
h
是空的。是的,我知道了……但我一辈子都不明白该使用什么属性名。使用“type”point返回空。如果我使用h=findobj(gcf,'marker','o')或h=findobj然后,我有一些东西,但是设置命令集(H,‘MauleSead’,12,‘MARKEDED GECCOLR’,=CB(i,:))使得所有的颜色都相同…我知道它是一个句柄的问题,但不能算出它现在正在写一个响应,我得到它。谢谢,这对我帮助很大。但对我来说,颜色条就像你的情况一样,但标记是从蓝色到红色,而不是从蓝色到黄色?第二,我尝试使用colormap,但它没有显示任何内容!此外,在pzoptions中也没有办法删除右侧垂直轴上的编号OK,因此我没有意识到colobar没有改变。我刚刚更新了代码@零。与获取line属性的方法相同,可以获取“Ytick”属性并将其设置为零。我想这会让它们消失。代码中的cb是什么??如果我可以问你为什么使用地板?如果我不清楚,我的意思是如果使用cb分配颜色,你为什么使用parula?这就是为什么在我的例子中,除非我从parula中提取颜色并分配这些颜色,否则它不会改变!我不知道怎么做!
clear;clc
cb=parula(10);
s=tf('s');
L_array=5:5:50;

figure; hold on;
for i=1:length(L_array)
    L=L_array(i);
    G=((58.2+11.7*L)*s^2*25^2+(3996.8 + 815.7*L)*s*25+815.7*25^2)/(s^2*(s^2*25^2+126.9*s*25+(3996.8+1.9*25^2)));
    CL=feedback(G,1);
    pzmap(CL);

end

% lets do this in the end!

% you will have length(L_array)*2 +1 items in h
 h = findobj(gca,'type','line'); 
for jj=2:length(h)
        set(h(jj),'MarkerSize',12,'Color',cb(floor(jj/2),:));
end
grid;

colormap(parula);   % I am using parula, you can use jet, but I discourage it
c=colorbar;