2010-08-23 4 views
6

Je voudrais tracer les données x & y avec les barres d'erreur, ebar, et son ajustement, yfitted, sur un intrigue semilog. Cela ne semble pas fonctionner:En utilisant errorbar() avec semilogy() dans MATLAB?

figure; 
hold on; 
errorbar(x,y,ebar); 
semilogy(x,yfitted); 

Au lieu de semilog je reçois un tracé linéaire. Que devrais-je faire différemment?

Répondre

8

essayer

h = errorbar(x,y,ebar); 
set(get(h,'Parent'), 'YScale', 'log') 

ou

ax = axes(); 
errorbar(ax, x,y,ebar); 
set(ax, 'YScale', 'log'); 
+0

sorte de travaux mais il vis toutes les barres d'erreur vers le haut .. par ex. il ne parvient pas à dessiner certaines des lignes verticales – AndyL

+2

Comme vous l'avez probablement réalisé, vous ne pouvez pas prendre le journal de 0 ou un nombre négatif – Marc

3

Voici ce que dit la documentation.

« Si vous tentez d'ajouter un loglog, semilogx ou terrain semilogy à un graphique en mode axe linéaire avec attente, le mode d'axe reste tel qu'il est et les nouvelles données tracera comme linéaire »

I suggérerait que vous venez d'inverser l'ordre de votre complot, c'est.

semilogy(x,yfitted); 
hold on; 
errorbar(x,y,ebar); 
+0

J'avais essayé cela en premier. Cela ne fonctionne pas réellement. :/ – AndyL

+0

Je suis sur MATLAB R2009a – AndyL

+0

Cela devrait fonctionner. Ecrivez-vous >> figure; >> attends-toi; avant d'utiliser la sémilogie? Si vous le faites, ça ne marchera pas. Il suffit d'écrire les trois lignes dans mon message et vous obtiendrez le même résultat que la réponse ci-dessus. – Ghaul

Questions connexes