Je souhaite ajouter une ligne d'axe des abscisses à 0 à une figure matlab afin de pouvoir comparer mes données pour voir si elles sont positives ou négatives lors de la sauvegarde des figures au format jpg. Quelle est la meilleure façon de procéder? Je sais que vous pouvez utiliser line (), mais cela semble simplement encombrant car vous devez spécifier les plages x et y. Y a-t-il un moyen plus facile? Merci!
Je ne crois pas qu'il existe un moyen intégré qui soit plus pratique. J'utilise hline()
et vline()
à partir de FileExchange, qui fonctionnent comme un charme:
Il existe une fonction non documentée graph2d.constantline
:
plot(-2:5, (-2:5).^2-1)
%# vertical line
hx = graph2d.constantline(0, 'LineStyle',':', 'Color',[.7 .7 .7]);
changedependvar(hx,'x');
%# horizontal line
hy = graph2d.constantline(0, 'Color',[.7 .7 .7]);
changedependvar(hy,'y');
La bonne chose est qu’il implémente en interne un écouteur pour les limites d’axes (les poignées changent comme le panoramique, le zoom, etc.). Ainsi, les lignes sembleraient s'étendre à l'infini.
Une commande vline
et hline
comme dans GNU R serait formidable, mais je n'ai pas pu trouver de solution plus courte que
plot(1:10,sin(1:10));
line(xlim,[0 0],'Color','r')
Vous pouvez obtenir cette plage x directement après la création de la figure. C'est un peu comme ça:
x=-2:5;
y=x.^2-1;
figure()
plot(x,y);
xlim = get(gca,'xlim'); %Get x range
hold on
plot([xlim(1) xlim(2)],[0 0],'k')
Notez que si vous effectuez un zoom arrière manuel sur la figure, vous devrez peut-être redessiner la ligne pour parcourir la nouvelle plage x.
plot()
ou stem()
. Une fenêtre de figure s'ouvrira.