2011-11-10 28 views
16

Voglio aggiungere una linea dell'asse x a 0 a una figura matlab in modo da poter confrontare i miei dati per vedere se è positivo o negativo quando si salvano le figure in un jpg. Qual è il modo migliore per farlo? So che puoi usare line() ma sembra solo ingombrante perché devi specificare gli intervalli x e y. C'è un modo più semplice? Grazie!Come aggiungere una linea dell'asse x a una figura? (matlab)

risposta

6

si potrebbe ottenere questo intervallo x subito dopo la cifra è stato creato. Va un po 'di qualcosa come questo:

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') 

enter image description here

Si noti che se si fa qualsiasi manuale zoom out nella figura, la linea potrebbe dover essere ridisegnato per andare su tutta la nuova gamma x.

31

Esistono una funzione non documentata 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'); 

screenshot

La cosa bella è che implementa internamente un listener per i limiti assi (maniglie cambiano come pan, zoom, ecc ..). Quindi le linee sembrerebbero estendersi all'infinito.

+0

Sembra che la mia versione di Matlab 7.0.1 R14 SP1 mi dia una violazione di segmentazione quando eseguo il codice e non ottengo la linea dell'asse x.:( –

+1

perché il downvote, la tua versione di [MATLAB] (http://en.wikipedia.org/wiki/MATLAB#Release_history) è piuttosto vecchia, e come risulta non esegue la soluzione di cui sopra .. Plus as Ho menzionato, questa è una caratteristica non documentata – Amro

+0

scusate, non pensavo che avrebbe fatto così.Ho provato a annullare l'upvote, ma invece ha causato il downvote.non è molto intuitivo .. =/ora non posso fare nulla dal l'ans è bloccato fino a quando il post non viene modificato e non ho i privilegi di modifica –

6

Un comando vline e hline come in GNU R sarebbe fantastico, ma non sono riuscito a trovare una soluzione più breve di

plot(1:10,sin(1:10)); 
line(xlim,[0 0],'Color','r') 
+1

Questo è un metodo molto elegante! –

0
  1. Disegna i tuoi dati plot() comando o stem(). Si aprirà una finestra di figura.
  2. Quindi, nella finestra della figura, fare clic sul comando [insert] dalla barra dei menu , verrà visualizzato un menu a discesa.
  3. Da questo menu fare clic sul comando [linea], ora la forma del cursore
    diventerà un segno più.
  4. Ora è possibile tracciare una linea dovunque, sia orizzontale che
    verticale o inclinata.
  5. È possibile modificare le proprietà di linea facendo clic destro sulla linea
    , un menu apparirà da cui è possibile scegliere i vostri desideri
    proprietà.
  6. Se si desidera avere qualche segno di spunta sulla linea, è possibile utilizzare l'opzione Aggiungi testo e posizionare il testo dove si desidera.
  7. Se si desidera avere un codice per la vostra figura, cliccare sul menu [File] e poi cliccare su [generatecode] opzione, un nuovo editor di testo si aprirà
    finestra, è possibile salvare questo codice per un ulteriore uso. In bocca al lupo.
Problemi correlati