python迭代器的MATLAB版本

python迭代器的MATLAB版本,python,matlab,graphics,Python,Matlab,Graphics,我需要为同一轴上的一系列绘图指定颜色和标记。在Python中,我只需为每个对象创建一个迭代器,然后使用next()将它们按顺序逐个输出。我在MATLAB中找不到等价物;我发现的所有示例都涉及显式地调用按索引保存颜色和标记的列表,但这排除了在不使用匹配迭代器的循环中使用它们。迭代器概念是否有更合适的替代方案 或者,在MATLAB中是否有更合适的方法来实现这一点?您可以在plot命令中定义绘图的外观(例如颜色和标记)。例如,绘图(1:5,'-go')将生成带有o-maker的绿色绘图。() 或者,

我需要为同一轴上的一系列绘图指定颜色和标记。在Python中,我只需为每个对象创建一个迭代器,然后使用
next()
将它们按顺序逐个输出。我在MATLAB中找不到等价物;我发现的所有示例都涉及显式地调用按索引保存颜色和标记的列表,但这排除了在不使用匹配迭代器的循环中使用它们。迭代器概念是否有更合适的替代方案

或者,在MATLAB中是否有更合适的方法来实现这一点?

您可以在plot命令中定义绘图的外观(例如颜色和标记)。例如,
绘图(1:5,'-go')
将生成带有
o
-maker的绿色绘图。()


或者,您确实可以在轴中的图上迭代。如果在一个命令中执行所有绘图,如

h = plot(1:5,[1:5;2:2:10]);
然后,
h
将是图表线对象的向量,然后您可以使用

for i=1:length(h)
    h(i).<some_modifications>
end
或2014年之前的MATLAB版本:

set(h(i),'LineWidth',2)
set(h(i),'Marker','*')
如果使用单独的命令进行绘图,则可以手动收集向量中返回的图表线对象并执行相同的操作(当然也可以直接修改它们)。您可以找到一些可以使用的属性

这就是您要找的吗?

您可以使用axis的和属性:您可以找到完整的文档

ColorOrder
属性是RGB三元组的三列矩阵,
LineStyleOrder
是行说明符的单元格数组,或者是由
分隔的说明符字符串

此图是使用下面的代码创建的。当然,您也可以使用一个或甚至一个自定义矩阵生成
ColorOrder
矩阵

figure;

set(gca, 'ColorOrder', hsv(5));
set(gca, 'LineStyleOrder', '-|--|:');

hold on;

t = 0:pi/20:2*pi;
for i = 1:15
    plot(t, sin(t-i/5));
end

无论如何,据我所知,在MATLAB中没有迭代器的概念,尤其是Python意义上的迭代器,但至少这个解决方案应该能够解决您的问题,而无需显式调用颜色列表和/或按索引标记。

我假设您正在进行线图绘制。如果使用
网格
区域
。。。要创建面积/曲面图,还有一些选项。我需要更改标记,而不是线条样式。这是一系列点图,而不是线图。我需要1个菱形,然后是圆形,然后是方形,等等@Elliot然后相应地更改
LineStyleOrder
属性:
set(gca,'LineStyleOrder','d | o | s')
不带实线或
set(gca,'LineStyleOrder','-d |-o |-s')
带实线。格式规范定义了线型和标记它只显示最后一项。当我使用上面的代码而不使用该行时,颜色会更新,但该行样式始终使用第二项。事实上,该行不是必需的,因为
hold on
基本上是
set(gca,'NextPlot','add')
的快捷方式。我已将其从示例中删除。
figure;

set(gca, 'ColorOrder', hsv(5));
set(gca, 'LineStyleOrder', '-|--|:');

hold on;

t = 0:pi/20:2*pi;
for i = 1:15
    plot(t, sin(t-i/5));
end