2011-11-10 13 views
16

Quiero agregar una línea del eje x en 0 a una figura de matlab para poder comparar mis datos para ver si son positivos o negativos al guardar las figuras en un jpg. ¿Cuál es la mejor manera de hacer esto? Sé que puedes usar la línea() pero parece engorroso porque necesitas especificar los rangos x e y. hay una manera mas facil? ¡Gracias!¿Cómo agregar una línea del eje x a una figura? (matlab)

Respuesta

6

Usted puede obtener este rango x directamente después de la figura ha sido creada. Se va un poco algo como esto:

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

Tenga en cuenta que si lo hace cualquier manual de zoom en la figura, la línea podría tener que ser rediseñados para repasar toda la nueva gama de x.

31

Existen una función indocumentado 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

Lo bueno es que se implementa internamente un oyente de los límites de los ejes (manijas cambian como pan, zoom, etc ..). Entonces las líneas parecen extenderse al infinito.

+0

Parece que mi versión de Matlab 7.0.1 R14 SP1 me da una infracción de segmentación cuando ejecuto el código y no obtengo la línea del eje x.:( –

+1

por qué el downvote, su versión de [MATLAB] (http://en.wikipedia.org/wiki/MATLAB#Release_history) es bastante antigua, y resulta que no ejecuta la solución anterior .. Además de Mencioné, esta es una característica indocumentada – Amro

+0

lo siento, no pensé que lo haría. Traté de deshacer el upvote, pero causó el downvote en su lugar. No es muy intuitivo .. =/ahora no puedo hacer nada ya el ans está bloqueado hasta que se edite la publicación y no tengo privilegios de edición. –

6

Un vline y hline comando como en GNU R sería genial, pero no pude encontrar una solución más corta que

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

¡Este es un método muy elegante! –

0
  1. Dibuje sus datos mediante el comando o plot()stem(). Se abrirá una ventana de figura.
  2. Luego, en la ventana de la figura, haga clic en el comando [insertar] de la barra de menú
    , aparecerá un menú desplegable.
  3. En este menú, haga clic en el comando [línea], ahora la forma del cursor
    se convertirá en un signo más.
  4. Ahora puede dibujar una línea en cualquier lugar que desee, ya sea horizontal o
    vertical o inclinada.
  5. Puede cambiar las propiedades de la línea haciendo clic con el botón derecho en la línea
    , aparecerá un menú desde el que puede elegir sus deseos
    propiedades.
  6. Si quiere tener algunos tics en la línea, puede usar la opción de agregar texto y colocar el texto donde quiera.
  7. Si desea tener un código para su figura, haga clic en el menú [archivo] y luego haga clic en la opción [generatecode], se abrirá un nuevo editor de texto , puede guardar este código para su uso posterior. Buena suerte.
Cuestiones relacionadas