【问题标题】:pzmap or pzplot color handle for multiple plots用于多个绘图的 pzmap 或 pzplot 颜色句柄
【发布时间】:2017-02-21 10:39:38
【问题描述】:

我正在使用您喜欢的 pzmap.mpzplot.m 绘制系统的闭环极点。当我更改 L 所描绘的变量时,我想查看极点和零点的移动。

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

MWE:

cb=jet(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);
    h = findobj(gcf,'type','point'); set(h,'markers',12,'color',cb(i,:));
    clear L G CL h
end
grid;
c=colorbar
c.Label.String = 'L'

如果你运行它,你会看到大小没有改变,并且图表看起来很疯狂,两边的 y 轴都标有刻度。我想要一个合适的 colorbar 从蓝色到红色,颜色分布正确,但多次尝试后无法获得。如果我能减少混乱,那也很有帮助。

【问题讨论】:

  • 我已经运行了你的代码:如果我没有理解错,你只是想给“时间”上色,所以每次你绘制的东西都会有一些不同的颜色。我在我的电脑(Matlab 2014b)中看到的是 h=findobj(... 行实际上没有效果,那是你的问题。 h 为空。
  • 是的,我想通了……但我一生都无法理解要使用什么属性名称。使用 'type' 'point' 返回空值。如果我使用 h=findobj(gcf,'marker', 'o') 或 h=findobj('marker','x') 那么我除了设置命令 set(h,'MarkerSize',12,'MarkerEdgeColor ',=cb(i,:)) 使所有内容都具有相同的颜色...我知道这是处理问题,但无法弄清楚
  • 我正在写回复,我明白了。
  • 荣誉 :) 感谢您的努力...干杯
  • 检查我的答案,如果有帮助,请考虑接受它;)

标签: matlab plot colors


【解决方案1】:

您的代码中有几个问题

  • h = findobj(gcf,'type','point');屏幕上绘制的东西其实是'line'的类型!
  • 每次迭代,您都会捕获所有点,并在删除清除属性后立即修改它们。

另外,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!!请使用感知统一的颜色图!

【讨论】:

  • 感谢它对我帮助很大。但对我来说,颜色条就像你的情况一样,但标记是从蓝色到红色而不是蓝色到黄色?其次,我尝试使用颜色图,但它没有显示任何内容!
  • 另外,pzoptions 中也没有办法删除右侧垂直轴上的编号
  • 好的,所以我没有意识到 colobar 没有改变。我刚刚更新了代码。 @零 。与获取 line 属性的方式相同,您可以获取“Ytick”属性并将其设置为零。我认为这会让它们消失。
  • 你的代码中的cb是什么?如果我可以问你为什么使用地板?
  • 如果我不清楚,我的意思是如果用cb分配颜色,你怎么用parula?这就是为什么在我的情况下,除非我从 parula 中提取颜色并分配这些颜色,否则它不会改变!我不知道该怎么做!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2015-08-18
  • 1970-01-01
  • 2016-11-01
相关资源
最近更新 更多