Is there a setting to move labels on a plot closer

14 visualizaciones (últimos 30 días)
Zhangxi Feng
Zhangxi Feng el 22 de Ag. de 2024
Comentada: Zhangxi Feng el 22 de Ag. de 2024
In the following image is plotted with the code:
load('data.mat');
f = figure;
f.Position = [21,471,1883,333];
subplot(1,4,1);
S = 50;
scatter3(xCoord*1e6,yCoord*1e6,zCoord*1e6,S,sd1,'filled');
xlabel('x (\mum)');
ylabel('y (\mum)');
zlabel('z (\mum)');
xlim([-15 15]);
ylim([-15 15]);
zlim([-15 15]);
xticks([-15 0 15]);
xticklabels({'-15','0','15'});
yticks([-15 0 15]);
yticklabels({'-15','0','15'});
zticks([-15 0 15]);
zticklabels({'-15','0','15'});
% axis equal;
cb = colorbar();
% clim([0 1]);
title(cb, 'SD1');
subplot(1,4,2);
S = 50;
scatter3(xCoord*1e6,yCoord*1e6,zCoord*1e6,S,sd2,'filled');
xlabel('x (\mum)');
ylabel('y (\mum)');
zlabel('z (\mum)');
xlim([-15 15]);
ylim([-15 15]);
zlim([-15 15]);
xticks([-15 0 15]);
xticklabels({'-15','0','15'});
yticks([-15 0 15]);
yticklabels({'-15','0','15'});
zticks([-15 0 15]);
zticklabels({'-15','0','15'});
% axis equal;
cb = colorbar();
% clim([0 1]);
title(cb, 'SD2');
subplot(1,4,3);
S = 50;
scatter3(xCoord*1e6,yCoord*1e6,zCoord*1e6,S,sd3,'filled');
xlabel('x (\mum)');
ylabel('y (\mum)');
zlabel('z (\mum)');
xlim([-15 15]);
ylim([-15 15]);
zlim([-15 15]);
xticks([-15 0 15]);
xticklabels({'-15','0','15'});
yticks([-15 0 15]);
yticklabels({'-15','0','15'});
zticks([-15 0 15]);
zticklabels({'-15','0','15'});
% axis equal;
cb = colorbar();
% clim([0 1]);
title(cb, 'SD3');
subplot(1,4,4);
S = 50;
scatter3(xCoord*1e6,yCoord*1e6,zCoord*1e6,S,relangle,'filled');
xlabel('x (\mum)');
ylabel('y (\mum)');
zlabel('z (\mum)');
xlim([-15 15]);
ylim([-15 15]);
zlim([-15 15]);
xticks([-15 0 15]);
xticklabels({'-15','0','15'});
yticks([-15 0 15]);
yticklabels({'-15','0','15'});
zticks([-15 0 15]);
zticklabels({'-15','0','15'});
% axis equal;
cb = colorbar();
clim([0 30]);
title(cb, '\alpha');
Notice the colorbar labels "SD1", "SD2", "SD3" are clipped at the top and X and Y axes labels are far away from the axes.
Is there a setting to fix all these? I have been moving them manually with the editor but I have several of these figures and would like to make them as consistent as possible in terms of things like label positions. I think it is possible to scan the texts and set their positions semi-manually with code, but it would be much easier if there is a setting like "tight' or something to move them closer. But "axis tight" does not work here, possibly due to the 3D nature of the plots.
  3 comentarios
Matt J
Matt J el 22 de Ag. de 2024
Editada: Matt J el 22 de Ag. de 2024
Your code doesn't run, because the arguments to scatter3() are not provided.
Zhangxi Feng
Zhangxi Feng el 22 de Ag. de 2024
I didn't feel like being able to plot was important. I have now attached the data.mat file and added load('data.mat') to the code.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 22 de Ag. de 2024
Editada: Matt J el 22 de Ag. de 2024
You can use the axis label text object porperties to move them around, e.g.,
h=gca;
h.XLabel.Position(end)=h.XLabel.Position(end)+0.1
and the axes OuterPosition property to shrink the height of the axes and prevent the clipping, e.g.,
h.OuterPosition(end)=h.OuterPosition(end)*0.9
  3 comentarios
Matt J
Matt J el 22 de Ag. de 2024
This is not ideal since these are 3D plots and I would need to manipulate 3D position I believe
I'm not sure why that is "not ideal", but it is not necessary in any case. You can specify the label positions with 2D coordinates if you wish, even in 3D plots, e.g.,
scatter3(rand,rand,rand);
xlabel 'X-axis'; ylabel 'Y-Axis'; zlabel 'Z-Axis';
h=gca;
h.XLabel.Position=[h.XLabel.Position(1:2)]+[0,0.3];
Zhangxi Feng
Zhangxi Feng el 22 de Ag. de 2024
Thanks this helps!

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by