多行 Scilab 图:自动循环槽 'LineSpec' 样式

Scilab plot with many lines: automatic cycling trough 'LineSpec' styles

我在同一个图中绘制了大约 10 条线,并使用 plot 的内置选项循环显示颜色。可悲的是,这个选项只有 7 种颜色,然后又从第一种颜色开始。当颜色循环一次时,是否有像 Matlab 中那样的选项来获得不同的线型? 我知道我可以为每一行手动更改颜色和线条样式,但我更喜欢自动解决方案。

我不知道执行此操作的内置方法,但阅读 Linespec 手册页,您可以创建一个函数来循环遍历所有说明符。

其中最简单的是:

function Linespec=CycleSpec(n)
  // n : from 0 to N
  Linestyle =['-';'--';':';'-.']
  Linecolor = ['r';'g';'b';'c';'m';'y';'k';'w']
  Linemarker =['';'+';'o';'*';'.';'x';'s';'d';'^';'v';'>';'<';'p']
  i = modulo(n,size(Linecolor,'*'))+1
  j = modulo(floor(n/size(Linecolor,'*')),size(Linestyle,'*'))+1
  k = modulo(floor(n/size(Linecolor,'*')/size(Linestyle,'*')),size(Linemarker,'*'))+1
  Linespec = Linestyle(j)+Linecolor(i)+Linemarker(k)
endfunction

可以用作

figure(1)
for n=0:40
  plot(x,x+n,CycleSpec(n))
end

如果你真的想要简单的东西,我们可以添加一个全局变量来存储计数器,这样你只需要调用函数,不需要参数

function Linespec=CycleSpec()
  // n : from 0 to N
  global CycleSpecCounter
  if CycleSpecCounter==[] then
    CycleSpecCounter = 0
  end
  n=CycleSpecCounter
  [...] same code as before [...]
  CycleSpecCounter=CycleSpecCounter+1
endfunction

你只需要输入

plot(x,x+n,CycleSpec())