【问题标题】:Scilab plot with many lines: automatic cycling trough 'LineSpec' styles带有多条线的 Scilab 图:自动循环槽“LineSpec”样式
【发布时间】:2017-08-28 11:09:09
【问题描述】:

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

【问题讨论】:

    标签: plot colors scilab


    【解决方案1】:

    我不知道执行此操作的内置方法,但阅读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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      相关资源
      最近更新 更多