Existe-t-il un moyen de renverser l’axe des ordonnées dans les diagrammes matlab afin que la direction positive de l’axe des ordonnées soit orientée vers le bas?
(Je vous en prie; s'il vous plaît ne dites pas, imprimez-le, puis retournez le papier ;-)
La propriété 'YDir'
axes peut être 'normal'
ou 'reverse'
. Par défaut, il s'agit de 'normal'
pour la plupart des tracés, mais certains tracés le changeront automatiquement en 'reverse'
, tel que les fonctions image
ou imagesc
.
Vous pouvez définir la direction de l'axe y d'un axe avec la fonction set
ou l'indexation de points (dans les versions MATLAB les plus récentes):
h = gca; % Handle to currently active axes
set(h, 'YDir', 'reverse');
% or...
h.YDir = 'reverse';
Certaines autres réponses me déconcertent de dire que la propriété 'YDir'
a disparu ou donne une erreur. Je n'ai observé aucun comportement de ce type dans les versions de MATLAB de 2013, 2014 ou 2016. Il n'y a que deux pièges potentiels que j'ai rencontrés:
La propriété ne peut pas être définie avec un tableau de cellules, uniquement une chaîne de caractères:
>> set(gca, 'YDir', {'reverse'});
Error using matlab.graphics.axis.Axes/set
While setting property 'YDir' of class 'Axes':
Invalid enum value. Use one of these values: 'normal' | 'reverse'.
bien que cela fonctionne:
set(gca, {'YDir'}, {'reverse'}); % Property name is also a cell array
La fonction gca
ne peut pas être utilisée de façon interchangeable en tant que descripteur lors de l'indexation de points (c'est pourquoi je l'ai d'abord enregistrée dans une variable h
dans l'exemple ci-dessus):
>> gca.YDir
Undefined variable "gca" or class "gca.YDir".
>> gca.YDir = 'reverse' % Creates a variable that shadows the gca function
gca =
struct with fields:
YDir: 'reverse'
Enfin, si vous voulez du code qui permette de basculer la propriété 'YDir'
quel que soit son état actuel, vous pouvez le faire:
set(gca, 'YDir', char(setdiff({'normal', 'reverse'}, get(gca, 'YDir'))));
% or...
h = gca;
h.YDir = char(setdiff({'normal', 'reverse'}, h.YDir));
La commande
axis ij
Va également inverser l’axe des Y (négatif au-dessus de l’axe des x; positif en dessous).
Au lieu de YDir
(pour une raison que je ne vois pas encore), vous pouvez faire pivoter les axes avec view
. Pour inverser l’axe des ordonnées, utilisez
view(0,-90);