2017-08-28 10 views
1

Je trace environ 10 lignes dans la même intrigue et utilise l'option intégrée de plot pour faire défiler les couleurs. Malheureusement, cette option n'a que 7 couleurs et recommence avec la première couleur. Existe-t-il une option comme dans Matlab pour obtenir un type de ligne différent, lorsque les couleurs passent par une seule fois? Je sais que je peux changer la couleur et le style de ligne manuellement pour chaque ligne, mais je préférerais une solution automatique.Scilab intrigue avec plusieurs lignes: style de LineSpec automatique creux de cyclisme

Répondre

0

Je ne connais pas de méthode intégrée pour cela, mais en lisant la page de manuel Linespec, vous pouvez créer une fonction permettant de parcourir tous les spécificateurs.

Le plus simple d'entre eux étant:

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 

qui pourrait être utilisé comme

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

Et si vous voulez vraiment quelque chose de simple, nous pouvons ajouter une variable globale stocker le compteur si vous avez seulement besoin pour appeler la fonction, pas besoin de paramètre

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 

et vous auriez seulement besoin de taper

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