Les objets de type Axes ne possèdent pas de propriété permettant d'incliner les labels des repères de l'axe des abscisses d'un graphique.
Il existe néanmoins plusieurs contributions disponibles sur le File EXchange qui répondent à ce besoin :
Il existe néanmoins plusieurs contributions disponibles sur le File EXchange qui répondent à ce besoin :
- XTICKLABEL_ROTATE, par Brian Katz
- XTICKLABEL_ROTATE90, par Denis Gilbert
- Rotate XTick Labels for multi-axes, par Peter Platzer
---------------
Comment mettre une étiquette à mes points ?
x=rand(3,1); y=rand(3,1); figure plot(x,y,
'
r+
'
); str=num2str([1:numel(x)].'
,
'
%
1d');
%
ATTENTION
le
premier
argument
de
NUM2STR
doit
être
un
vecteur
colonne
text(x+0.01,y+0.01,str)%
Le
décalage
de
0.01
est
arbitraire
ici. ------------
omment tracer une ligne dont la couleur varie ?x = rand(3,1); y = rand(3,1); figure subplot(2,1,1) plot(x,y) subplot(2,1,2) patch(
'
xdata
'
,[x;x(end
:-1:1)],...
'
ydata
'
,[y;y(end
:-1:1)],...
'
facecolor
'
,'
interp
'
,...
'
edgecolor
'
,'
interp
'
,...
'
facevertexcdata
'
,[y;y(end
:-1:1)]) ------------- omment animer le tracé d'une courbe ?%
Génération
des
données
th=0:0.02:10*pi; y=sin(th);%
Création
de
l'objet
Figure
contenant
les
tracés
fig=figure;%
Première
objet
Axes
où
est
tracée
la
courbe
directe
subplot(2,1,1)%
Tracé
de
la
courbe
plot(th,y,'
r-
'
)%
Ajustement
des
limites
de
l'objet
Axes
xlim([min(th) max(th)]) ylim([min(y) max(y)])%
Second
objet
Axes
où
est
tracée
la
courbe
animée
subplot(2,1,2)%
Modification
de
la
propriété
DoubleBuffer
de
l'objet
Figure
pour
%
éviter
le
clignotement
de
la
fenêtre
%
NECESSAIRE
POUR
TOUTE
ANIMATION
set(fig,'
doublebuffer
'
,'
on
'
)%
Tracé
du
premier
point
de
la
courbe
%
et
récupération
de
l'identifiant
(handle)
p
de
l'objet
Line
crée.
p=plot(th(1),y(1),'
r-
'
);%
Ajustement
des
limites
de
l'objet
Axes
xlim([min(th) max(th)]) ylim([min(y) max(y)])%
On
boucle
sur
le
nombre
de
points
à
tracer.
%
On
démarre
à
2
puisque
le
premier
est
déjà
tracé
for
n=2:numel(th)%
Ajout
des
points
de
la
courbe
au
fur
et
à
mesure
%
en
utilisant
la
combinaison
SET
+
identifiant
(handle)
set(p,'
xdata
'
,th(1:n),'
ydata
'
,y(1:n));%
Forçage
de
l'affichage
du
tracé
drawnowend
-------------
Comment récupérer les valeurs de données tracées ? Dans tous les cas, il faut utiliser la fonction FINDOBJ pour récupérer l'identifiant de l'objet dont on veut récupérer les données. Pour les objets de type Line (nuage de points ou lignes), Surface ou Mesh, on récupère les propriétés XDATA, YDATA et ZDATA Pour les objets de type Image, on récupère la propriété CDATA Pour les objets de type Patch, on récupère, soit les propriétés XDATA, YDATA et ZDATA, soit les propriétés VERTICES et FACES[X,Y,Z] = peaks(20) surf(X,Y,Z); h=findobj(
'
type
'
,'
surf
'
); xx=get(h,'
xdata
'
) yy=get(h,'
ydata
'
) zz=get(h,'
zdata
'
) -------------------- Comment redimensionner une image ? La première solution consiste à utiliser la fonction IMRESIZE contenue dans l'Image Processing Toolbox. La deuxième solution utilise l'indexage des matrices. Puisqu'une image est une matrice 2D ou 3D (RGB), il est très simple de diminuer la taille d'une image en jouant sur l'indexage. Par exemple, pour diminuer par deux la taille d'une image 2D, il suffit de ne conserver qu'un pixel sur deuximg=rand(150,200);
%
Une
image
2D
aléatoire
size(img) ans = 150 200 img=img(1:2:end
,1:2:end
); size(img) ans = 75 100 --------Pour une image 3D (RGB), le code devient :img=rand(150,200,3);
%
Une
image
3D
(RGB)
aléatoire
size(img) ans = 150 200 3 img=img(1:2:end
,1:2:end
,:); size(img) ans = 75 100 3 ----- On remarque que cette solution utilisant l'indexage se limite à des facteurs de réductions/agrandissement entier. La troisième solution utilise les fonctions d'interpolation. Soit INTERP2 pour diminuer par deux la taille d'une image 2D :img = rand(150,200);
%
Une
image
2D
aléatoire
size(img) ans = 150 200 [c,r ] = size(img);%
Récupération
des
2
dimensions
de
l'image
[ci,ri] = meshgrid(1:2:r,1:2:c);%
Génération
de
la
grille
d'interpolation
img = interp2(img,ci,ri);%
Interpolation
des
valeurs
des
pixels
size(img) ans = 75 100 Soit INTERP3 pour diminuer par deux la taille d'une image 3D :img = rand(150,200,3);
%
Une
image
3D
(RGB)
aléatoire
size(img) ans = 150 200 3 [c,r,p] = size(img);%
Récupération
des
3
dimensions
de
l'image
[ci,ri,pi] = meshgrid(1:2:r,1:2:c,1:p);%
Génération
de
la
grille
d'interpolation
img = interp3(img,ci,ri,pi);%
Interpolation
des
valeurs
des
pixels
du
plan
R
size(img) ans = ans = 75 100 3