C'è un modo per capovolgere l'asse y in grafici matlab, in modo che la direzione positiva dell'asse y, anziché su, punti verso il basso?Capovolgimento asse y in MATLAB
(vi prego, si prega di non dire, stamparlo, quindi ruotare la carta intorno ;-)
C'è un modo per capovolgere l'asse y in grafici matlab, in modo che la direzione positiva dell'asse y, anziché su, punti verso il basso?Capovolgimento asse y in MATLAB
(vi prego, si prega di non dire, stamparlo, quindi ruotare la carta intorno ;-)
Il 'YDir'
axes property può essere sia 'normal'
o 'reverse'
. Per impostazione predefinita è 'normal'
per la maggior parte dei grafici, ma alcuni grafici lo modificano automaticamente su 'reverse'
, ad esempio le funzioni image
o imagesc
.
È possibile impostare la direzione dell'asse y di un asse sia con la funzione set
o indicizzazione punto (nelle versioni più recenti MATLAB):
h = gca; % Handle to currently active axes
set(h, 'YDir', 'reverse');
% or...
h.YDir = 'reverse';
Sono sconcertato da alcune delle altre risposte dire che la La proprietà 'YDir'
è in qualche modo scomparsa o sta dando un errore. Non ho visto un tale comportamento nelle versioni di MATLAB a partire dal 2013, 2014 o 2016. Ci sono solo due potenziali insidie mi sono imbattuto:
La proprietà non può essere impostato con un array di celle, solo una stringa di caratteri:
>> 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'.
anche se questo funziona:
set(gca, {'YDir'}, {'reverse'}); % Property name is also a cell array
La funzione gca
non può essere utilizzato in modo intercambiabile come maniglia quando si eseguono do t indicizzazione (che è il motivo per cui ho salvato in una variabile h
nell'esempio di cui sopra):
>> 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'
Infine, se volete un po 'di codice che alternerà la proprietà 'YDir'
non importa quale sia il suo stato attuale è , si può fare questo:
set(gca, 'YDir', char(setdiff({'normal', 'reverse'}, get(gca, 'YDir'))));
% or...
h = gca;
h.YDir = char(setdiff({'normal', 'reverse'}, h.YDir));
Bello! (Mi piace molto la combinazione MATLAB e SO, quando eseguo rapidamente un calcolo :) – Rook
Nel caso in cui il grafico corrisponda a un grafico 3D, l'asse Y di solito è invertito di default (puoi controllarlo con get (gca, 'YDir' In questo caso, prova: 'set (gca, 'YDir', 'normale');' – tashuhka
Il comando
axis ij
Inverserà anche l'asse Y (negativo sopra l'asse x; positivo sotto).
Anche questo funziona – Mahm00d
Le soluzioni sulla parte superiore della pila non ha funzionato per me,
imagesc(x,y,data) % results in a flipped plot, the y axis is upside down
set(gca,'YDir','reverse'); % gives an error
axis ij; % still gives the flipped plot
ciò che ha funzionato è stato il di seguito:
imagesc(x,y,data); axis xy; % results in the correct plot
La proprietà YDir
è scomparsa nella versione MATLAB (2013 e oltre) che sto usando.
Sei un angelo –
Penso che questa sia la risposta alle risposte qui, specialmente l'ultima riga 'images (tempo, y, matrice); asse xy;'. I comandi 'set ('YDir', 'reverse');' e 'set ('YDir', 'normal');' esistono nel mio Matlab 2016a. Non capisco cosa intendi che alcune proprietà siano svanite, probabilmente è appena cambiata –
Per quanto ne so, la proprietà '' YDir'' è sempre stata presente e l'impostazione non mi ha mai dato un errore. per me nelle versioni a partire dal 2013, 2014 e 2016. – gnovice
Per aggiornare questa risposta, dal momento che è ancora un popolare risultato di Google: partire dal R2014a, il modo corretto di capovolgere l'asse Y è la seguente:
>> axis ij
Questo cambiamento può essere invertita attraverso il seguente comando
>> axis ji
Per capovolgere gli assi X o Z, effettuare le seguenti
set(gca,'XDir','reverse');
set(gca,'ZDir','reverse');
Personalmente, penso che sarebbe stato più facile per mantenere l'opzione YDir, ma che ne so io.
Per quanto ne so, la proprietà '' YDir'' è sempre stata presente e la sua impostazione non ha mai Dammi un errore Questo ha funzionato per me nelle versioni a partire dal 2013, 2014 e 2016. – gnovice
In alternativa a YDir
(per qualche motivo non posso attualmente vedere) è possibile ruotare gli assi con view
. Per capovolgere l'asse y, utilizzare
view(0,-90);
@Rook Si prega di notare la risposta di Ejo60 che secondo me è la migliore risposta qui ora. –