ylabel linewidth ejemplo matlab plot line axis matlab-figure

matlab - linewidth - Elimine solo las líneas del eje sin afectar las marcas y marcar las etiquetas



title matlab (4)

Solución para las versiones de Matlab anteriores a R2014b

Puede introducir un nuevo cuadro delimitador blanco y colocarlo encima.

// example data x = linspace(-4,4,100); y = 16 - x.^2; plot(x,y); hold on ax1 = gca; set(ax1,''box'',''off'') %// here you can basically decide whether you like ticks on %// top and on the right side or not %// new white bounding box on top ax2 = axes(''Position'', get(ax1, ''Position''),''Color'',''none''); set(ax2,''XTick'',[],''YTick'',[],''XColor'',''w'',''YColor'',''w'',''box'',''on'',''layer'',''top'') %// you can plot more afterwards and it doesn''t effect the white box. plot(ax1,x,-y); hold on ylim(ax1,[-30,30])

Importante es desactivar los tics de los segundos ejes, para mantener los tics de la primera.

En la solución de Luis Mendo , las líneas trazadas son fijas y permanecen en su posición inicial si luego cambias las propiedades de los ejes. Eso no sucederá aquí, se ajustan a los nuevos límites. Use el mango correcto para cada comando y no habrá muchos problemas.

La solución de Dan es más fácil, pero no se aplica a las versiones de Matlab anteriores a R2014b .

¿Hay alguna forma de eliminar solo las líneas del eje en la figura de Matlab, sin afectar los ticks y las etiquetas tic.

Sé que esa box alterna las líneas y los tics de los ejes superior y derecho y eso funciona perfectamente para mí.
Pero mi problema es que quiero eliminar las líneas inferior e izquierda (¡solo líneas!), Pero manteniendo los tics y las etiquetas tic.

¿Algún truco?


El Matlab no documentado de Yair Altman demuestra una forma más limpia de hacerlo utilizando las reglas de los ejes no documentados:

plot(x,y); ax1 = gca; yruler = ax1.YRuler; yruler.Axle.Visible = ''off''; xruler = ax1.XRuler; xruler.Axle.Visible = ''off''; %// note you can do different formatting too such as xruler.Axle.LineWidth = 1.5;

Una buena característica de este enfoque es que puede formatear por separado las líneas del eje xey.


Hay otra forma no documentada (aplicable a MATLAB R2014b y versiones posteriores) de eliminar las líneas al cambiar el ''LineStyle'' de las reglas a ''none'' .

Ejemplo:

figure; plot(1:4,''o-''); %Plotting some data pause(0.1); %Just to make sure that the plot is made before the next step hAxes = gca; %Axis handle %Changing ''LineStyle'' to ''none'' hAxes.XRuler.Axle.LineStyle = ''none''; hAxes.YRuler.Axle.LineStyle = ''none''; %Default ''LineStyle'': ''solid'', Other possibilities: ''dashed'', ''dotted'', ''dashdot''

Esto es diferente de la respuesta de Dan que usa la propiedad ''visible'' de los gobernantes.


Podría "borrar" las líneas del eje trazando una línea blanca sobre ellas:

plot(1:4,1:4) %// example plot box off %// remove outer border hold on a = axis; %// get axis size plot([a(1) a(2)],[a(3) a(3)],''w''); %// plot white line over x axis plot([a(1) a(1)],[a(3) a(4)],''w''); %// plot white line over y axis

Resultado:

Como señaló @SardarUsama, en las versiones recientes de Matlab, es posible que deba ajustar el ancho de la línea para cubrir los ejes:

plot(1:4,1:4) %// example plot box off %// remove outer border hold on a = axis; %// get axis size plot([a(1) a(2)],[a(3) a(3)],''w'', ''linewidth'', 1.5); %// plot white line over x axis. %// Set width manually plot([a(1) a(1)],[a(3) a(4)],''w'', ''linewidth'', 1.5);