Bonjour
Alors voilà mon problème. Je dois tracer des fonctions de répartition de lois normales sur un graphe. Mais dans la communauté scientifique, la convention veut que de telles courbes soient plottées de telle façon qu'elles apparaissent comme des droites (Voir spoiler).
Du coup, j'ai ma courbe, et je dois la plotter sur des axes franchement exotique et je ne sais pas comment coder ça. J'ai appelé un prof pour me dépanner et il m'a passé un code matlab. J'ai essayé de le transposer en Scilab, mais il y a deux lignes de code trop compliquées que je n'arrive pas à faire (les deux dernières).
Voici le code matlab :
Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function p=probiplot(x) x=x(~isnan(x)); % isnan = fonction reconnue dans scilab. Détecte les N.a.N (Not a Number) ss=sort(x/std(x)); % sort dans matlab trie les vecteurs dans l'ordre croissant. (~gsort dans scilab ?). std = stdev n=length(x); % Lenght, c'est la même fonction que dans scilab az=((1:n)-0.5)/n; % Cette ligne n'a pas besoin d'être convertie, Scilab sait la lire. z=normq(az); % Fonction personalisée du prof. Doit être réécrite plot(z,ss,'ro',z,z,'k'); % plot = plot2d axis square % Paramètre d'axe pour fixer des longeurs égales. Je comprends pas trop comment adapter ça dans scilab... axis([-5 5 -5 5]); % Axis spécifie les limites d'axe. J'ai l'impression que c'est la même chose que rect mais je sais pas comment coder ce bidule
Voici la transposition que j'en ai faite pour Scilab:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function [p] = probiplot(x) x=x(~isnan(x)); ss=gsort(x/stdev(x),"i"); n=length(x); az=((1:n)-0.5)/n; z=normq(az); // Je m'en occuperai plus tard plot(z,ss,'ro',z,z,'k'); set(gca(),"???","on") // Je met quoi à la place des ??? x_ticks.locations ? auto_ticks ? isoview ? whatever ? set(gca(),"data_bounds",matrix([-5,5,-5,5],2,-1)); endfunction
Voilà. Ce sont les deux dernières lignes que je comprends pas. Apparemment, il y a un truc à faire avec la fonction newaxes puis avec sca, mais je rame complètement avec la liste complète des propriété d'axes !
Partager