如何在matlab中为矩阵图提供不同的linespecs

how to give different linespecs for a plot of matrix in matlab

我有矩阵,我想用不同的 linespec 绘制它的每一行:

linespec = {'b.', 'r-', 'g--o','+','x','*','o','.'};
h=plot(myMatrix');
[row,col]=size(myMatrix); //row can be max. 8
for i=1:row
   set(h(i),'LineStyle','-','Marker',linespec{i});
end

上面的代码,我得到错误;

Error using set

Bad property value found.

Object Name: line

Property Name: 'Marker'

谁能告诉我完成它的正确方法? 提前致谢。

作为解决方法,您可以在绘制每一行时更改循环中的标记类型,因为您可以向 plot 提供第三个参数,它指定线条样式、标记符号和颜色:

clc
clear


M = rand(8);

linespec = {'b.', 'r-', 'g--o','+','x','*','o','.'};

[row,col]=size(M);
hold all
for i=1:row
    h(i) =plot(M(i,:),linespec{i});

end

输出:

至于错误背后的原因,MathWorks 的 this 页面解释说自 R2010a 以来:

You can not set the LineStyle and Marker properties simultaneously. You have to call the SET function twice [...]

所以这样的事情会起作用:

clc
clear


M = rand(4);

linestyles = {'-', '-.', '--',':'};
markers = {'.','>','o','+'};
colors = {'b','r','g','k'};

h = plot(M)

for i = 1:size(M,1)
set(h(i), 'LineStyle', linestyles{i})
set(h(i), 'Marker', markers{i})
set(h(i), 'Color', colors{i})

end