具有许多线条的Scilab情节:自动循环槽&LineSpec'款式

时间:2017-08-28 11:09:10

标签: plot colors scilab

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

1 个答案:

答案 0 :(得分:0)

我不知道这样做的内置方法,但是阅读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())