绘制矩阵并为每 3 行定义 LineStyle

Plotting matrices and defining a LineStyle for i.e. every 3rd line

在我的代码中,我使用 plot(x,y),其中 x and y16x12 矩阵。现在我想定义样式规则,例如 'the first two lines should be red, then two lines blue' 或 'every 3rd line should be LineStyle --'...我想定义一个 LineStyle and a Color-Array 并用 for-loop 或逐行绘制矩阵类似的东西,但我想知道是否有更优雅的方法来做到这一点?

有一个LineStyleOrder轴属性。因此,可以像这样设置每三行为虚线:

data = rand(9);
set(gca, 'LineStyleOrder','-|-|--'); %// note you can replace '-|-|--' with {'-','-','--'} if you prefer
hold on;
plot(data);

您可以使用 ColorOrder 属性 对颜色执行相同的操作,因此前 2 行红色和接下来的 2 行蓝色(然后重复)是

set(gca, 'ColorOrder',[1 0 0; 1 0 0; 0 0 1;0 0 1]);

但是,如果将两者混合使用,它只会在每 12 行之后重复一次:

set(gca,'ColorOrder',[1 0 0; 1 0 0; 0 0 1;0 0 1],...
        'LineStyleOrder','-|-|--')

即这将循环遍历您指定的 ColorOrder within 您的 LineStyleOrder (即对于每种线条样式,它循环遍历所有颜色)所以在这种情况下,前两行是实心红色,下一个丝束是实心蓝色,接下来两个是实心红色,接下来两个是实心蓝色然后第 9 行和第 10 行将是红色虚线,第 11 行和第 12 行将是蓝色虚线,然后重复此模式。

所以单独使用它们会起作用(只要确保你将它与 hold on 结合使用,即使你一次性绘制所有内容)但是如果你想独立于线条样式循环使用颜色那么你将不得不循环。