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