多行 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())
我在同一个图中绘制了大约 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())